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$ |