当前位置: 首页 > news >正文

GYM106191E-Leaf

GYM106191E-Leaf

题目大意:

有一张隐藏的, \(n\) 个节点的有向图。你的目标是在 \(n\) 次查询内,找到这张图的任一叶子节点,或没有则输出 \(-1\)

你的查询操作:

输出两个点集:\(S\)\(T\) ,它们是集合 \(\{1,2,3, \ldots \ldots, n\}\) 的子集。集合 \(S\)\(T\) 可以有交集。

系统将会返回,从 \(S\) 出发,到 \(T\) 结束的边的数量。

\(Hint\)

特殊的,当 \(S==T\) 时,系统返回的值即为,集合中的点构成的子图的边数。

题解

要找到一个叶子节点,即找到一个点,出度+入度为 \(0\)。可以发现,单独把一个节点,和剩余节点作为两个集合,一次查询只能得到入度或出度的信息。我们无法在 \(O(n)\) 时间内维护出每个点。

根据 \(Hint\) ,我们可以先查询所有点的集合,得到全图的边数 \(tot\)

再依次查询除去第 \(i\) 个点的集合。可以发现用全图边数减去每次查询的结果,得到的就是第 \(i\) 个点的度。度为 \(1\) 即说明该点为叶子节点。

但是这样查询,一共使用了 \(n+1\) 次查询,比题目要求多了一次。一张图中的边数是固定的,所以最后第 \(n\) 个点的度,可以通过 总度数 \(tot*2\) 减去其余每个点的度数得到。这样我们就只使用了 \(n\) 次查询操作,就得到了所有点的度。

#include<bits/stdc++.h>
#define ios ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);
#define umap unordered_map
//#define endl '\n'
using namespace std;
using i128 = __int128;
const int mod =1e9+7;
template <typename T>void read(T&x){x=0;int f = 1;char c=getchar();for(;!isdigit(c);c=getchar())if(c=='-')f=-1;for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+(c^48);x*=f;
}
template <typename T>void print(T x) {if (x < 0) { putchar('-'); x = -x; }if (x > 9) print(x / 10);putchar(x % 10 + '0');
}
#define int long long
const int N=500005;
const int M=2000005;
inline void solve()
{int n;cin>>n;cout<<"? "<<n<<" ";for(int i=1;i<=n;i++) cout<<i<<" ";cout<<n<<" ";for(int i=1;i<n;i++) cout<<i<<" ";cout<<n<<endl;int tot;cin>>tot;vector<int> edge(n+1); for(int i=1;i<n;i++){cout<<"? "<<n-1<<" ";for(int j=1;j<i;j++) cout<<j<<" ";for(int j=i+1;j<=n;j++) cout<<j<<" ";cout<<n-1<<" ";for(int j=1;j<i;j++) cout<<j<<" ";for(int j=i+1;j<n;j++) cout<<j<<" ";cout<<n<<endl;cin>>edge[i];edge[i]=tot-edge[i];}edge[n]=2*tot;for(int i=1;i<n;i++) edge[n]-=edge[i];for(int i=1;i<=n;i++){if(edge[i]==1){cout<<"! "<<i<<endl;return;}}cout<<"! "<<-1<<endl;
}signed main()
{ios;int T=1;cin>>T;for(;T--;) solve();return 0;
}
http://www.rkmt.cn/news/53240.html

相关文章:

  • WebSocket使用教程 整合springboot
  • 【C++】哈希表 - 详解
  • 论文大纲模版怎么用?看完这篇全明白!
  • 屏幕信息网站
  • 微信公众号服务号关注发送授权链接,直接注册成为会员,再接入智能客服功能
  • 14. Service
  • 理解Spring AI Message API
  • 2025年眼镜护理液批发厂家权威推荐榜单:硬性隐形眼镜护理液/隐形眼镜护理液/硬镜护理液源头厂家精选
  • 2025北京专门做马来西亚留学机构
  • 2025年lora传感器定做厂家权威推荐榜单:lora组网/lora通信/lora网关源头厂家精选
  • 2025年房梁装修生产商权威推荐:房梁定制厂家/房梁打孔/房梁装饰源头厂家精选
  • AI元人文价值原语化理论体系深度研究报告
  • javascript的版本
  • 2025 滑轨品牌口碑排行榜:权威测评!炬森五金登顶,6 大热门品牌实力对决
  • 基于深度学习计算机视觉的风格迁移高效的技术原理与经典完成解析
  • 2025 年 11 月热电偶厂家推荐排行榜,热电偶感温线,针式热电偶,扣式热电偶,高精度测温设备公司推荐
  • 2025 年 11 月电热管厂家推荐排行榜,不锈钢/单头/空气干烧/浸入式/分流板/热流板/翅片/铁氟龙/工业电热管,电热圈,半导体电热,反应釜电热公司推荐
  • MATLAB实现高光谱分类算法
  • 2025年苏州地区PLC控制柜生产厂家深度推荐
  • Spring Boot 实现 DOCX 转 PDF(基于 docx4j 的轻量级开源方案) - 教程
  • 逻辑芯片 - 电子开关
  • 2025 最新压花辊源头厂家权威推荐榜:国际协会测评认证,覆盖多材质适用场景的品质厂商精选布料压花辊 / 木材压花辊 / 真皮压花辊 / 铝膜压花辊 / 珍珠棉压花辊 / 薄膜压花辊公司推荐
  • CPP 格式化文件 .clang-format
  • 通过SSH转发端口
  • CVPR 2024 目标检测!开放词汇
  • linux apache 解析php
  • linux apache 的日志
  • 权威发布:2025年度MES系统综合排名,聚焦实用功能与选型避坑指南
  • 2025年遗产继承咨询律师权威推荐榜单:遗产继承/婚姻诉讼/财产纠纷律师精选
  • 2025年11月合肥抗衰老公司排名情况