QOJ.ac

QOJ

حد الوقت: 1 s حد الذاكرة: 512 MB مجموع النقاط: 100 تفاعلية

#4884. 戦艦:新ルール

الإحصائيات

Ivanは戦艦ゲームの新しいルールを考案しました!

  • ゲームは $n \times n$ のボードで行われます。
  • 先攻プレイヤーは整数 $k$ ($n \le k \le \lfloor \frac{n}{2} \rfloor^2$) を選択します。
  • その後、先攻プレイヤーは $k$ 隻の船をボード上に配置します。このとき、船が占有するマスの数が(任意のサイズの $k$ 隻の船の有効な配置の中で)最大になるように配置します。
  • 各船は $1 \times a$ または $a \times 1$ の長方形である必要があります($a$ は $1$ から $n$ までの任意の整数)。どの2隻の船も、辺または角で隣接してはいけません。

その後、後攻プレイヤーがゲームを開始します。

  • 後攻プレイヤーはボードのサイズ $n$ のみを知っています。
  • 後攻プレイヤーは「セル $(x, y)$ は船によって占有されているか?」というクエリを投げることができます。
  • 後攻プレイヤーは、ボード上の空いている $2 \times 2$ の正方形を任意に見つけるか、そのような正方形が存在しないことを報告する必要があります。

後攻プレイヤーは最大 $6n$ 回までクエリを投げることができます。後攻プレイヤーとしてプレイし、ゲームに勝利してください!

インタラクション

最初の行には、プレイするゲームの数を示す整数 $t$ ($1 \le t \le 100$) が含まれます。あなたは $t$ 回のゲームをプレイし、その後インタラクションを終了する必要があります。

ゲームの開始時に、ボードのサイズを示す単一の整数 $n$ ($3 \le n \le 1000$) が与えられます。

その後、クエリを投げることができます。クエリを投げるには、単一行で “? $x$ $y$” ($1 \le x, y \le n$) — セルの座標 — を出力してください。回答 $c$ が与えられます。

  • $c = -1$ の場合、クエリ回数が多すぎます。プログラムを終了してください。
  • $c = 0$ の場合、セル $(x, y)$ は空です。
  • $c = 1$ の場合、セル $(x, y)$ は何らかの船によって占有されています。

ゲームを終了するには、単一行で “! $x$ $y$” を出力してください。ここで:

  • ボード上に空の $2 \times 2$ の正方形が存在しない場合、$x = -1, y = -1$ とします。
  • それ以外の場合、$1 \le x, y \le n - 1$ であり、セル $(x, y), (x + 1, y), (x, y + 1), (x + 1, y + 1)$ からなる正方形が空である必要があります。

回答が正しくない場合、値 $-1$ を含む行が与えられるので、プログラムを終了してください。正しい場合、値 $1$ を含む行が与えられるので、次のゲームをプレイしてください(最後のゲームであった場合はプログラムを終了してください)。

すべてのゲームにおける $n$ の合計は $5000$ を超えないことが保証されています。 各ゲームにおけるボードは固定されており、インタラクタは適応型ではないことが保証されています。 何も出力しなかったり、出力をフラッシュし忘れたりすると、あなたのソリューションは Idleness Limit Exceeded となります。

入出力例

入力 1

2
3
0
1
4
0
1
1

出力 1

? 2 1
! -1 -1
? 1 3
? 4 3
! 2 2

注記

最初のテストのボードを以下の図に示します。行は $x$ 座標、列は $y$ 座標に対応します。

左:最初のゲームのボード。右:2番目のゲームのボード。

最初のゲームでは、ボード上に空の $2 \times 2$ の正方形はありません。 2番目のゲームでは、ボード上に空の $2 \times 2$ の正方形がちょうど1つ存在します。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
#627Editorial Open集训队作业 解题报告 by 陈奕帆Qingyu2026-01-02 23:20:43 Download

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.