P10831 [COTS 2023] 三角形 Trokuti
题目背景
译自 [Izborne Pripreme 2023 (Croatian IOI/CEOI Team Selection)](https://hsin.hr/pripreme2023/) D1T3。$\texttt{1s,0.5G}$。
祝 NaCly_Fish 生日快乐!(2024.7.28)
题目描述
**这是一道交互题。交互库是非自适应的。**
有一个隐藏的简单无向图 $G$,其中恰有 $N=100$ 个节点。试通过以下询问重建 $G$:
> **询问** 给定两两不同的节点 $u,v,w$,回答这三个节点的导出子图(induced subgraph)的边数。注意到答案只会是 $0,1,2,3$。
【实现细节】
你的程序通过标准输入输出与交互库交互。
- $\texttt{? u v w}$:发起一次询问,回答 $u,v,w$ 的导出子图的边数(从标准输入读取),注意到答案只会是 $0,1,2,3$。
你需要保证 $1\le u,v,w\le 100$,$u,v,w$ 两两不同。最多询问 $161\, 700$ 次。
- $\texttt{!}$:回答答案。在输出 $\texttt{!}$ 后换行,接下来输出 $N$ 行,每行一个长度为 $N$ 的 $\texttt{01}$ 字符串。
第 $i$ 行第 $j$ 个字符如果是 $\texttt{1}$,代表 $(i,j)$ 间有边;否则代表 $(i,j)$ 间无边。
每次输出后,你需要刷新缓冲区。如:C++ 中的 `cout.flush()`。
输入格式
见【实现细节】。
输出格式
见【实现细节】。
说明/提示
#### 评分方式
记 $Q$ 为你程序询问的最多次数。
若 $Q\gt 161\, 700$,得 $0$ 分。
否则,你的得分将由下表确定:
| $Q$ | 得分 |
|:-----:|:------:|
| $9\, 900\le Q\le 161\, 700$ | $\displaystyle 10+10\cdot \frac{161\, 700-Q}{161\, 700-9\, 900}$ |
| $4\, 950 \le Q\le 9\, 900$ | $\displaystyle 20+10\cdot \frac{9\, 900-Q}{9\,900-4\,500}$ |
| $3\, 400\le Q\le 4\, 950$ | $\displaystyle 30+70\cdot \frac{4\,950-Q}{4\,950-3\,400}$ |
| $Q\le 3\, 400$ | $100$ |