当前位置: 首页 > 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.jsqmd.com/news/43729/

相关文章:

  • WebSocket使用教程 整合springboot
  • 【C++】哈希表 - 详解
  • linux apache配置文件
  • 2025年隔离器厂家实力榜:细胞治疗隔离器、无菌粉体原料药隔离器、负压隔离器、多类型隔离器五家企业凭技术与口碑出圈
  • 论文大纲模版怎么用?看完这篇全明白!
  • 2025年国内产品认证机构权威评测:昆明英格尔管理咨询有限公司蝉联榜首
  • [题解]P2340 [USACO03FALL] Cow Exhibition G
  • 基于模型预测控制的主蒸汽温度单步预测MATLAB实现
  • 2025年自动化绕线机订制厂家权威推荐:电机自动绕线机/小型自动绕线机/全自动电机绕线机源头厂家精选
  • 屏幕信息网站
  • 2025年知名的储气罐定制厂家权威推荐榜单:可靠的储气罐/质量好的储气罐/专业的储气罐源头厂家精选
  • Kubernetes 调度器开发方法概述
  • Springboo下的MQTT多broker实现
  • CF1830D Mex Tree
  • 14. Service
  • 基于图像小波变换的多尺度自适应双边滤波matlab仿真 - 指南
  • 2025年11月防晒选购指南:花西子/珀莱雅/薇诺娜/安热沙实测,全肤质闭眼入款竟是它
  • 使用马尔科夫蒙特卡洛方法对非常规的概率密度函数进行样本抽取
  • 如何在Totally Stub区域达成负载均衡
  • 2025年江苏产学研合作协议展会权威推荐:江苏产学研合作优化/江苏产学研合作促进会/江苏产学研合作模式机构精选
  • 理解Spring AI Message API
  • CSP2025游寄
  • 2025年眼镜护理液批发厂家权威推荐榜单:硬性隐形眼镜护理液/隐形眼镜护理液/硬镜护理液源头厂家精选
  • 2025北京专门做马来西亚留学机构
  • 2025年国内旧房翻新服务商综合实力排行榜前十强推荐
  • 2025年lora传感器定做厂家权威推荐榜单:lora组网/lora通信/lora网关源头厂家精选
  • 国标GB28181算法算力平台EasyGBS:构筑银行金融网点的智能安全与高效运营新模式
  • 2025 年 11 月水位计厂家推荐排行榜,超声波/雷达/气泡式水位计,水位测针,雷达/一体式分体式电子水尺,液位计/管网液位计/液位差计,雷达物位计/平板雷达公司推荐
  • AI元人文价值原语化理论体系深度研究报告
  • swagger 自动化文档