CF1291F.Coffee Varieties (easy version)

省选/NOI-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

这是该问题的简单版本。你可以在 Div. 1 比赛中找到难度更高的版本。两个版本的区别仅在于你可以让你的朋友品尝咖啡的次数不同。

这是一个交互式问题。

你正在考虑搬到另一个城市,你的一个朋友已经住在那里。这个城市有 nn 家咖啡馆,其中 nn 是 22 的幂次方。第 ii 家咖啡馆只生产一种咖啡,种类为 aia_i。

作为咖啡爱好者,在决定是否搬家之前,你想知道这个城市一共有多少种不同的咖啡品种 dd。

你并不知道 a1,…,ana_1, \ldots, a_n 的具体数值。幸运的是,你的朋友有一个容量为 kk 的记忆(kk 也是 22 的幂次方)。

你每天可以让他品尝一家咖啡馆 cc 生产的咖啡,他会告诉你在过去 kk 天内是否品尝过相同的咖啡。

你还可以让他服用一种药物来重置他的记忆。他会忘记之前品尝过的所有咖啡。你最多可以重置他的记忆 30 00030\,000 次。

更正式地说,你朋友的记忆是一个队列 SS。对咖啡馆 cc 进行一次查询会:

  • 告诉你 aca_c 是否在 SS 中;
  • 将 aca_c 加入 SS 的末尾;
  • 如果 ∣S∣>k|S| > k,则弹出 SS 的队首元素。

进行一次重置操作会清空 SS 中的所有元素。

你的朋友最多可以总共品尝 2n2k\dfrac{2n^2}{k} 杯咖啡。请你求出不同咖啡品种的数量 dd(即数组 aa 中不同数值的个数)。

注意,重置记忆的操作不计入你让朋友品尝咖啡的总次数限制。

在某些测试点中,交互器的行为是自适应的。这意味着数组 aa 在交互开始前可能不是固定的,并且可能会根据你的查询动态变化。保证在交互的任何时刻,至少存在一个数组 aa 与目前所有回答一致。

输入格式

第一行包含两个整数 nn 和 kk(1≤k≤n≤10241 \le k \le n \le 1024,kk 和 nn 都是 22 的幂次方)。

保证 2n2k≤20 000\dfrac{2n^2}{k} \le 20\,000。

输出格式

你通过读取 nn 和 kk 开始交互。

  • 若要让你的朋友品尝第 cc 家咖啡馆的咖啡,在单独一行输出 ? c,其中 1≤c≤n1 \le c \le n。不要忘记刷新输出,以获得回复。

    你会收到一个单独的大写字母 Y(是)或 N(否),表示该咖啡品种 aca_c 是否在他最近 kk 次记忆中出现过。

  • 若要重置你朋友的记忆,在单独一行输出大写字母 R。你最多可以进行 30 00030\,000 次重置操作。

  • 当你确定了不同咖啡品种的数量 dd 时,输出 ! d。

如果你的查询无效、? 查询次数超过 2n2k\frac{2n^2}{k},或 R 查询次数超过 30 00030\,000,程序会输出字母 E 并结束交互。你会收到 Wrong Answer 判定。请确保立即退出以避免其他判定。

每次输出查询后不要忘记输出换行并刷新输出,否则会因超时被判为 Idleness limit exceeded。具体刷新方法如下:

  • C++:fflush(stdout) 或 cout.flush()
  • Java:System.out.flush()
  • Pascal:flush(output)
  • Python:stdout.flush()
  • 其它语言请查阅相关文档。

Hack 格式

第一行应为单词 fixed。

第二行包含两个整数 nn 和 kk,用空格分隔(1≤k≤n≤10241 \le k \le n \le 1024,kk 和 nn 都是 22 的幂次方)。

必须满足 2n2k≤20 000\dfrac{2n^2}{k} \le 20\,000。

第三行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n,用空格分隔(1≤ai≤n1 \le a_i \le n)。

输入输出样例

  • 输入#1

    4 2
    N
    N
    Y
    N
    N
    N
    N

    输出#1

    ? 1
    ? 2
    ? 3
    ? 4
    R
    ? 4
    ? 1
    ? 2
    ! 3
  • 输入#2

    8 8
    N
    N
    N
    N
    Y
    Y

    输出#2

    ? 2
    ? 6
    ? 4
    ? 5
    ? 2
    ? 5
    ! 6

说明/提示

在第一个样例中,数组为 a=[1,4,1,3]a = [1, 4, 1, 3]。这个城市一共生产 33 种不同的咖啡品种(11、33 和 44)。

你朋友依次品尝的咖啡品种为 1,4,1,3,3,1,41, 4, \textbf{1}, 3, 3, 1, 4(加粗的答案对应 Y 回答)。注意,在两次 ? 4 查询之间有一次记忆重置 R,所以第二次 ? 4 的回答是 N。如果没有重置,第二次 ? 4 的回答会是 Y。

在第二个样例中,数组为 a=[1,2,3,4,5,6,6,6]a = [1, 2, 3, 4, 5, 6, 6, 6]。这个城市一共生产 66 种不同的咖啡品种。

你朋友依次品尝的咖啡品种为 2,6,4,5,2,52, 6, 4, 5, \textbf{2}, \textbf{5}。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页