『JROI-7』hibernal
题目背景
我也不知为何会想说这个故事,我也确实不太理解小丑和厨师有什么关系,但既然他们此时此刻排列在我的草稿本上【附图】,那我也只能试着说说了。
呃呃,你说的很对,我也确实想不出他们的关系了。
唔,小丑会出现在这里或许多半是因为他的出场总伴着诡异。
但我还是觉得厨师这个角色有趣。
但是,但是,这和【hibernal】有什么关系吗。
啊,还是来说说厨师吧。食材还是让人觉得有趣的。
欸,其实蔬菜能提供比肉类丰富的多的口感,但是似乎大家都不认同我的观点,你呢?
英文字母和汉字之间要加空格,让我检查检查。
【AI绘画】少女,裸背,颈控。
啊,我知道了。这似乎可以是个有趣的故事。唔,写起来可能很花时间,你还是先过了这题再来催我吧 qwq.
最后是不是要说点什么以示礼貌啊。那就祝大家身体健康吧,好耶!
题目描述
有 $n$ 个苹果,第 $i$ 个编号为 $i$,其中有恰好 $2$ 个是金苹果。
每次询问可以把 $n$ 个苹果分为两个集合 $S_1,S_2$,要求每个苹果恰好被分到一个集合中。
设 $x$ 为 $S_1$ 中金苹果的个数,$y$ 为 $S_2$ 中金苹果的个数,交互库会返回 $x\times y$ 的值。
请在不超过 $19$ 次询问内求出两个金苹果的编号。
**交互库自适应,即两个金苹果的编号可能会随着询问而改变,但是始终满足所有已经发生过的询问(见样例)。**
输入输出格式
输入格式
本题多测,第一行一个正整数 $T$,表示数据组数,接下来 $T$ 行每行一个正整数 $n$,表示本组数据里数的个数。
本题采用 IO 交互模式。
### 交互格式
- `? k a1 a2 a3 ... ak` 将这 $k$ 个苹果放入一个集合,其他 $n-k$ 个苹果放入另一个集合,交互库会返回一个整数 $x$ 表示答案。**请务必保证 $0<k<n$。**
- `! x y` 输出答案。**请务必保证 $x<y$。**
请注意:在每组数据中,请保证第一种操作的次数总和不超过 $19$ 。
需要注意的是,在每一次操作后,需要调用以下函数刷新缓存:
- 对于 C/C++:`fflush(stdout);`
- 对于 C++:`std::cout << std::flush;`
- 对于 Java:`System.out.flush();`
- 对于 Python:`stdout.flush();`
- 对于 Pascal:`flush(output);`
对于其他语言,请自行查阅对应语言的帮助文档。
输出格式
见「交互格式」。
输入输出样例
输入样例 #1
1
5
1
0
输出样例 #1
? 3 1 2 3
? 2 2 4
! 1 5
说明
**样例仅供理解交互过程,可能不符合逻辑。**
【样例解释】
初始的两个金苹果为 $3,5$。
第一次询问,两个集合各有 $1$ 个金苹果,返回 $1$,金苹果的编号不发生改变。
第二次询问,一个集合有 $2$ 个金苹果,另一个集合没有,返回 $0$。接下来两个金苹果从 $3,5$ 变成了 $1,5$,容易发现,虽然金苹果的编号发生了变化,前两个询问的答案仍然是符合的。
回答 $1,5$,答案正确,交互结束。
---
### 数据范围
| 分数 | $n=$ | $T=$ |
| -----------: | -----------: | -----------: |
| $10$ | $2$ | $200$ |
| $10$ | $18$ | $200$ |
| $10$ | $64$ | $200$ |
| $20$ | $512$ | $200$ |
| $50$ | $1000$ | $200$ |
### 计分方式
对于每组测试数据,取 $200$ 组测试中进行询问次数最大的一组,若超过 $19$ 次,计 $0$ 分,否则计满分。
保证正常情况下交互库用时不超过 0.1s。
如果您的输出不合法,将会出现 TLE/WA 等情况。