题目背景
译自 Izborne Pripreme 2023 (Croatian IOI/CEOI Team Selection) D1T3。1s,0.5G。
祝 NaCly_Fish 生日快乐!(2024.7.28)
题目描述
有一个隐藏的简单无向图 G,其中恰有 N=100 个节点。试通过以下询问重建 G:
询问 给定两两不同的节点 u,v,w,回答这三个节点的导出子图(induced subgraph)的边数。注意到答案只会是 0,1,2,3。
【实现细节】
你的程序通过标准输入输出与交互库交互。
-
? u v w:发起一次询问,回答 u,v,w 的导出子图的边数(从标准输入读取),注意到答案只会是 0,1,2,3。
你需要保证 1≤u,v,w≤100,u,v,w 两两不同。最多询问 161700 次。
-
!:回答答案。在输出 ! 后换行,接下来输出 N 行,每行一个长度为 N 的 01 字符串。
第 i 行第 j 个字符如果是 1,代表 (i,j) 间有边;否则代表 (i,j) 间无边。
每次输出后,你需要刷新缓冲区。如:C++ 中的 cout.flush()
。
输入格式
见【实现细节】。
输出格式
见【实现细节】。
提示
评分方式
记 Q 为你程序询问的最多次数。
若 Q>161700,得 0 分。
否则,你的得分将由下表确定:
Q |
得分 |
9900≤Q≤161700 |
10+10⋅161700−9900161700−Q |
4950≤Q≤9900 |
20+10⋅9900−45009900−Q |
3400≤Q≤4950 |
30+70⋅4950−34004950−Q |
Q≤3400 |
100 |