QOJ.ac

QOJ

时间限制: 3.0 s 内存限制: 256 MB 总分: 100 可 Hack ✓

#17679. 自転車競技

统计

$N$ 人の自転車競技選手 $1, \dots, N$ がいる。各選手は $1$ から $N$ までの異なるスキルを持っており、2人の選手が対戦する場合、常にスキルが高い選手が勝利する。

選手たちは競技に参加することを好む。競技では、選手たちは環状のリストに並べられる。競技はラウンド形式で行われる。各ラウンドにおいて、各選手は隣接する選手とレースを行い、両隣の選手に負けた場合、その選手は敗退する。

あなたは各選手のスキルを知らないが、それを特定したいと考えている。あなたは全選手を対象とした競技を開催することができ、その都度環状リストの並び順を選択できる。各競技の後、各選手が何ラウンド目で敗退したかを知らされる。

最適な回数の競技を行って選手のスキルを特定せよ。また、部分点として $N$ 回の競技で特定することも可能である。

インタラクション

各テストケースは複数のテストから構成される。インタラクションは、テストケースの数を示す整数 $T$ ($1 \le T \le 10^4$) が含まれる行から始まる。

各テストケースは、選手数を示す整数 $N$ ($3 \le N \le 300$) が含まれる行から始まる。

その後、競技を開催することができる。競技を開催するには、? a1 a2 ... an という形式の行を出力する。ここで $a_k$ は、選手リストの $k$ 番目の位置にいる選手を表す。リスト $a_1, \dots, a_n$ は $1, \dots, n$ の順列でなければならない。

クエリに対する回答は r1 r2 ... rn という形式の行で与えられる。ここで $r_k$ は $0 \le r_k < n$ を満たす。$r_k > 0$ の場合、それは $k$ 番目の位置にいた選手が競技の $r_k$ ラウンド目で敗退したことを示す。$r_k = 0$ の場合、その選手が競技に優勝したことを示す。

選手のスキルを特定したら、! s1 s2 ... sn という形式の行を出力する。ここで $s_k$ は選手 $k$ のスキルと等しくなければならない。

不正なクエリを行ったり、$N$ 回を超える競技を開催しようとした場合、あなたの解は Wrong Answer と判定される。さらに、出力したスキルの集合がインタラクタが想定しているスキルの集合と異なる場合も、Wrong Answer と判定される。いずれの場合も、インタラクションは直ちに終了する。それ以外の場合、スコアリングセクションで説明されるスコアが得られる。

インタラクタは適応的である可能性があることに注意すること。つまり、選手の真のスキルはインタラクションを通じて変化する可能性があるが、現在のスキルの集合は常に過去のすべての競技結果と矛盾しないものとなる。

制約

各テストケースについて、$q$ をあなたが開催した競技の回数とする。また、各 $N$ に対して、$c_N$ をスキルを特定できることを保証するために必要な最小の競技回数とする。

すべてのテストケースで $q \le c_N$ を満たした場合、100点を得る。それ以外の場合、10点を得る。この問題の制約下では、10点を得るためにはすべてのテストケースで $q \le N$ を満たす必要があることに注意すること。

入出力例

入力 1

1
5
3 2 1 0 1
3 1 2 1 0
3 0 1 2 1
3 1 0 1 2

出力 1

? 1 2 3 4 5
? 1 3 5 2 4
? 1 4 2 5 3
? 1 5 4 3 2
! 4 2 1 5 3

注記

サンプルにおいて、選手たちのスキルはそれぞれ 4, 2, 1, 5, 3 である。

最初に行われた競技では、選手たちは環状リスト $[1, 2, 3, 4, 5]$ に並べられる。競技は以下のように進行する(各ラウンドにおいて、敗退した選手は $X$ と表記する)。

  • ラウンド 1:
    • 3番目の位置の選手(スキル 1 の選手 3)は、2番目と4番目の位置の選手(スキル 2 の選手 2、スキル 5 の選手 4)に負けて敗退する。
    • 5番目の位置の選手(スキル 3 の選手 5)は、4番目と1番目の位置の選手(スキル 5 の選手 4、スキル 4 の選手 1)に負けて敗退する。
    • 1番目の位置の選手(スキル 4 の選手 1)は、5番目と2番目の位置の選手(スキル 3 の選手 5、スキル 2 の選手 2)に勝ち、敗退しない。
    • 2番目の位置の選手(スキル 2 の選手 2)は、3番目の位置の選手(スキル 1 の選手 3)に勝ち、敗退しない。
    • 4番目の位置の選手(スキル 5 の選手 4)は、3番目と5番目の位置の選手(スキル 1 の選手 3、スキル 3 の選手 5)に勝ち、敗退しない。
  • ラウンド 2 において、選手リストは $[1, 2, X, 4, X]$ となる。
    • 2番目の位置の選手は、1番目と4番目の位置の選手に負けて敗退する。
    • 1番目の位置の選手は、2番目の位置の選手に勝ち、敗退しない。
    • 4番目の位置の選手は、他の2人の選手に勝ち、敗退しない。
  • ラウンド 3 において、選手リストは $[1, X, X, 4, X]$ となる。
    • 1番目の位置の選手は、4番目と4番目の位置の選手(同一人物)に負けて敗退する。
    • 4番目の位置の選手は、1番目の位置の選手に勝ち、敗退しない。

したがって、 1番目の位置の選手はラウンド 3 で敗退した。 2番目の位置の選手はラウンド 2 で敗退した。 3番目の位置の選手はラウンド 1 で敗退した。 4番目の位置の選手は競技に優勝した。 * 5番目の位置の選手はラウンド 1 で敗退した。

これにより、クエリに対する回答は $[3, 2, 1, 0, 1]$ となる。

2回目に行われた競技では、選手たちは環状リスト $[1, 3, 5, 2, 4]$ に並べられる。競技は以下のように進行する。

  • ラウンド 1:
    • 2番目の位置の選手(スキル 1 の選手 3)は、1番目と3番目の位置の選手(スキル 4 の選手 1、スキル 3 の選手 5)に負けて敗退する。
    • 4番目の位置の選手(スキル 2 の選手 2)は、3番目と5番目の位置の選手(スキル 3 の選手 5、スキル 5 の選手 4)に負けて敗退する。
    • 1番目の位置の選手(スキル 4 の選手 1)は、2番目の位置の選手(スキル 1 の選手 3)に勝ち、敗退しない。
    • 3番目の位置の選手(スキル 3 の選手 5)は、2番目と4番目の位置の選手(スキル 1 の選手 3、スキル 2 の選手 2)に勝ち、敗退しない。
    • 5番目の位置の選手(スキル 5 の選手 4)は、4番目と1番目の位置の選手(スキル 2 の選手 2、スキル 4 の選手 1)に勝ち、敗退しない。
  • ラウンド 2 において、選手リストは $[1, X, 5, X, 4]$ となる。
    • 3番目の位置の選手は、1番目と5番目の位置の選手に負けて敗退する。
    • 1番目の位置の選手は、3番目の位置の選手に勝ち、敗退しない。
    • 5番目の位置の選手は、他の2人の選手に勝ち、敗退しない。
  • ラウンド 3 において、選手リストは $[1, X, X, X, 4]$ となる。
    • 1番目の位置の選手は、5番目と5番目の位置の選手(同一人物)に負けて敗退する。
    • 5番目の位置の選手は、1番目の位置の選手に勝ち、敗退しない。

したがって、 1番目の位置の選手はラウンド 3 で敗退した。 2番目の位置の選手はラウンド 1 で敗退した。 3番目の位置の選手はラウンド 2 で敗退した。 4番目の位置の選手はラウンド 1 で敗退した。 * 5番目の位置の選手は競技に優勝した。

これにより、クエリに対する回答は $[3, 1, 2, 1, 0]$ となる。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.