Logo Wy Online Judge

WyOJ

#652. IOIP 20231015 converging-queries

保持通话,无人爆炸

  • 时间限制:1 秒
  • 内存限制:256 MB
  • 输入:标准输入
  • 输出:标准输出

本题的名称引用自一款知名游戏(以防有人不知道)。

这是一道交互题

罗伯特·奥本海默正在准备“三位一体”核试验。为此,他需要极其精确地调整原子弹的功率,以避免发生意外反应。试验成功的最大功率为 $p$ —— 任何更大的值都极有可能引发灾难性后果。

然而罗伯特并不知道 $p$ 的值,只知道 $2 \le p < 10^{12}$。为了找到 $p$,罗伯特可以进行一系列测试,也可以向著名科学家(如阿尔伯特·爱因斯坦)寻求建议。

  1. 为了寻求建议,罗伯特可以给出一个不超过 $10^6$ 的整数 $t$,并得到回答:$t$ 是否在区间 $(\sqrt{p}, p]$ 内。
  2. 如果罗伯特进行一次实验,他同样选择一个不超过 $10^{12}$ 的整数 $t$,并且:
    • 如果 $t > p$,实验会导致测试样品意外引爆,很可能造成多人伤亡并摧毁实验室;
    • 如果 $t \le p$,实验成功,罗伯特会得到一个从区间 $\left[\frac{p}{t}, \frac{p^2}{t^2}\right]$ 中均匀随机抽取的实数。

你能不比奥本海默慢地解决这个问题吗?根据 $p$ 的不同,他可以在不超过 $20$ 次询问内解决。但由于奥本海默毕竟是天才,允许你多进行两次询问。

输入数据

本题没有输入数据。

交互协议

你的程序与交互器的交互通过交换询问和回答进行。

  1. 要进行第一类询问(“寻求建议”),请输出 ADVICE $t$,其中 $t$ 是 $1$ 到 $10^6$ 之间的整数。作为回应,交互器将返回 YES 如果 $\sqrt{p} < t \le p$,否则返回 NO
  2. 要进行一次功率为 $t$ 的实验,请输出 EXPERIMENT $t$,其中 $t$ 应该在 $1$ 到 $10^{12}$ 之间(含),并且:
    • 如果 $t \le p$,交互器将以 OK $x$ 的格式返回,其中 $x$ 是从区间 $\left[\frac{p}{t}, \frac{p^2}{t^2}\right]$ 中均匀随机选择的浮点数,小数点后至少 $18$ 位;
    • 否则,交互器将输出 BOOM 并以 WA (Wrong Answer) 结束。
  3. 要报告你已经找到了 $p$ 的值,请输出 SUCCESS $p$,其中 $p$ 是你确定的值。然后:
    • 如果该值正确,交互器将返回 OK 并结束;
    • 否则,交互器将输出 BOOM 并以 WA 结束。

在每次输出一行后,不要忘记刷新输出缓冲区(C++ 使用 cout.flush(),Java 使用 System.out.flush(),Python 使用 sys.stdout.flush())。如果你的程序没有刷新输出缓冲区,或者在交互器结束后没有退出(无论得到什么结果),它可能会得到 TLIL 的结果。

如果你的程序进行了超过 $22$ 次第一类和第二类询问,交互器将与其他错误情况一样输出 BOOM 并以 WA 结束。如果你准确地知道了 $p$ 用了 $a_p \le 22$ 次询问,但标准解法用了 $a_j < a_p - 2$ 次询问,你仍然会得到 WA 的结果。

样例

样例 1

输入:

NO

OK 2.612136477990739891

OK 1.000000000000000000

OK

输出:

ADVICE 3

EXPERIMENT 1

EXPERIMENT 2

SUCCESS 2

样例 2

输入:

OK 7390019438.576070785522460938

YES

OK 1.836419809778194523

NO

YES

OK 1.001041327128544323

OK 1.000000000000000000

OK

输出:

EXPERIMENT 2

ADVICE 200000

EXPERIMENT 200000

ADVICE 31000

ADVICE 31100

EXPERIMENT 310500

EXPERIMENT 310771

SUCCESS 310771
题目信息
  • 难度 UKE
  • 控制组 group_default
  • 时间限制 1 s
  • 空间限制 256 MB
  • 数据大小 124.425 KB
提交统计
  • 提交数 0
  • 通过数 0
  • 通过率 N/A