#CF2135D1. RiOI编辑器(简单版)
RiOI编辑器(简单版)
这是该问题的简单版本。
简单版与困难版的区别在于:简单版中,所有查询的单词长度总和没有限制。
只有当你解决了所有版本的问题,才能进行 Hack。
这是一个交互题。
题目背景
RiOI 团队最近开发了一个名为 RiOI 编辑器的文本编辑器。
编辑器正好使用一个整数参数 ()——每行的宽度。
由于你不懂 RiOI 语言,从你的角度看,单词之间的区别仅在于它们的长度。
因此,一篇长度为 的文章被定义为一个由 个正整数构成的序列 ,其中 是文章中第 个单词的长度。
RiOI 编辑器按照以下方式在屏幕上显示文章 :
- 如果 ,编辑器无法显示这篇文章;
- 否则,编辑器可以按如下过程显示文章:
- 初始时,,。
整个过程中, 表示当前行数, 表示当前最后一行的所有单词长度之和。 - 然后对每个 :
- 如果 ,则将该单词插入到当前行的末尾: 不变, 增加 ;
- 否则,将该单词插入到新的一行: 增加 , 变为 。
- 显示文章所需的总行数就是最终的 。
- 初始时,,。
你对编辑器非常感兴趣,决定通过输入一些文章并观察显示所需行数来找出 的值。
交互规则
你可以向评测系统最多发出 次查询。
每次查询,你输入一篇文章 (),评测系统会返回:
- 如果可以显示,返回显示这篇文章所需的总行数;
- 如果无法显示(存在 ),返回 。
输入格式
每个测试文件包含多个测试用例。
第一行一个整数 (),表示测试用例数量。
接下来是交互过程。
交互过程(对每个测试用例)
你可以进行至多 次查询。
查询格式:
? n a1 a2 ... an
- 输出后,评测系统会返回一个整数(含义见上)。
当你确定 的值后,输出:
! W
- 输出答案不计入 次查询。
- 之后继续处理下一个测试用例,或如果这是最后一个则结束程序。
每次输出查询或答案后,必须刷新输出缓冲区,否则会得到 Idleness limit exceeded。
注意事项
- 如果交互过程中读到 ,说明你的查询非法或发生错误,此时必须立即退出程序,否则可能得到任意评测结果。
- 本题的交互器是自适应的,即 可能在交互过程中变化,但保证始终存在至少一个整数 满足所有查询。
Hack 格式
Hack 时,第一行输入格式为:
t manual
接下来 行,每行一个整数 ()。
示例 Hack 输入:
2 manual
20
1
示例
输入:
2
2
1
0
输出:
? 5 1 9 4 6 1
? 2 10 10
! 20
? 1 2
! 1
解释:
- 第一个测试用例:
- 第一次查询:单词总长 ,显示用了 行 → ;
- 第二次查询:单词总长 ,显示用了 行 → ;
- 因此 。
- 第二个测试用例:
- 第一次查询:无法显示 → ,所以 。
注意
- 数字和公式前后已加上 符号,符合 LaTeX 格式。