CF1970F3.Playing Quidditch (Hard)

提高+/省选-

通过率:0%

AC君温馨提醒

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

题目描述

今天下午,你决定在春天的第一天外出散步。当你走近魁地奇球场时,听到了尖叫声。又一次,比分出现了争议:两队都坚信自己赢得了比赛!为了防止这种情况再次发生,你决定参与比赛的裁判工作。

现在,你将留在体育场观看比赛并计分。在比赛结束时,你将决定获胜者。

今天,两支队伍正在比赛:红色的 Gryffindor(R)和蓝色的 Ravenclaw(B)队。每支队伍由 PP 名球员组成(1≤P≤101 \leq P \leq 10)。

球场是一个 NN 行 MM 列的矩形(3≤N,M≤993 \leq N, M \leq 99,NN 和 MM 都是奇数)。所有位置均为整数,多个实体可以处于场上的同一位置。比赛开始时,场上有两队的球门(每队可拥有 1 到 5 个球门)、球员,以及恰好一个 Quaffle。在本题版本中,还可能有一个 Bludger 和一个 Golden Snitch。

一场比赛由 TT 个步骤组成(0≤T≤100000 \leq T \leq 10000)。每一步,场上的一个实体(球员或球)执行一个动作。所有实体都可以移动。球员还可以接球或投掷自己携带的 Quaffle。要接球,球员必须与球处于同一格。被携带时,Quaffle 不会执行任何动作,只会跟随球员移动。如果携带 Quaffle 的球员决定投掷它,Quaffle 就会被放在球员当前位置。如果球员与 Bludger 处于同一格(无论是球员移动后还是 Bludger 移动后),该球员被淘汰。如果球员在携带 Quaffle 时被淘汰,Quaffle 会留在包含球员和 Bludger 的格子里。保证不会在球员处于球门格子时发生淘汰。

要得分,球员必须将 Quaffle 留在对方球门。此时,球员所在队伍得 1 分,Quaffle 立即移动到场地中央(第 (N+1)/2(N+1)/2 行、第 (M+1)/2(M+1)/2 列,起始编号为 1)。场地中央没有球门。如果球员把球放进了己方球门,则对方得分。如果球员接住了 Golden Snitch,则其队伍得 10 分,比赛立即结束。

输入格式

第一行,两个整数 NN 和 MM。

接下来是球场描述:NN 行,每行 MM 对字符,两字符之间用空格分隔。每对字符表示场上的一个位置,可能为:

  • .. 表示空格;
  • R0, ..., R9, B0, ..., B9 表示球员。第一个字符是队伍,第二个是球员编号。每对字符唯一,但不保证所有编号都出现在场上;
  • RG 或 BG 表示球门。蓝队试图将球投入红球门(RG),红队试图将球投入蓝球门(BG);
  • .Q 表示 Quaffle(比赛用球);
  • .B 表示 Bludger;
  • .S 表示 Golden Snitch。

下一行包含 TT,表示比赛的步数。接下来 TT 行,每行描述一个动作。每行由若干信息组成,空格分隔。首先是执行动作的实体的两字符编号。然后是动作描述:

  • U, D, L, R 表示实体在场上移动。U 表示上移,D 表示下移,L 表示左移,R 表示右移。每次只移动一格;
  • C 表示球员接球(只有球员能接球)。接着有一个空格和一对字符,表示被接住的球。由于同一格可能有多个球,因此需要此信息;
  • T 表示球员投掷自己携带的 Quaffle。

所有动作保证有效:球员不会离开场地,不会在不在同一格时接球,不会在未携带 Quaffle 时投掷等。

输出格式

你需要输出比赛主要事件的描述,每行一个事件。具体如下:

  • 每当有队伍得分时,输出 t RED GOAL 或 t BLUE GOAL,t 为当前时间(动作序号,从 0 开始)。如果球员把球投入了己方球门,则输出得分方为对方队伍。
  • 每当有球员被淘汰时,输出 t p ELIMINATED,其中 t 为当前时间,p 为被淘汰球员的编号,格式与输入一致。
  • 如果 Golden Snitch 被接住,输出 t RED CATCH GOLDEN SNITCH 或 t BLUE CATCH GOLDEN SNITCH,t 为当前时间。

事件按 t 升序输出。如果同一时刻有多名球员被淘汰,按字母顺序输出:B0, ..., B9, R0, ..., R9。

比赛结束后,输出最终比分:FINAL SCORE: r b,其中 r 为红队得分,b 为蓝队得分。

输入输出样例

  • 输入#1

    3 5
    .. .. R0 .. ..
    RG .. .Q .. BG
    .. .. B0 .. ..
    12
    R0 D
    R0 C .Q
    R0 R
    R0 T
    R0 D
    B0 R
    B0 U
    B0 C .Q
    B0 L
    B0 L
    B0 L
    B0 T

    输出#1

    11 BLUE GOAL
    FINAL SCORE: 0 1
  • 输入#2

    3 5
    .. .. R0 .. ..
    RG .. .Q .. BG
    .. .. B0 .. ..
    5
    R0 D
    R0 C .Q
    R0 L
    R0 L
    R0 T

    输出#2

    4 BLUE GOAL
    FINAL SCORE: 0 1
  • 输入#3

    5 5
    .. .. .. .. ..
    .. .. .. .. ..
    RG R0 .Q B0 BG
    .. .. .. .. ..
    .. .. .B .. ..
    5
    .B L
    .B U
    .B U
    B0 L
    B0 L

    输出#3

    2 R0 ELIMINATED
    4 B0 ELIMINATED
    FINAL SCORE: 0 0
  • 输入#4

    5 5
    .. R0 .S B0 ..
    .. .. .. .. ..
    RG .. .Q .. BG
    .. .. .. .. ..
    .. R1 .B B1 ..
    4
    .S D
    R0 D
    R0 R
    R0 C .S

    输出#4

    3 RED CATCH GOLDEN SNITCH
    FINAL SCORE: 10 0

说明/提示

在第一个样例中,红队球员拿到 Quaffle,移动并投掷。蓝队球员接球,前往红队球门并得分。

在第二个样例中,红队球员拿球并将球投入己方球门:蓝队得 1 分。

在第三个样例中,Bludger 移动到 R0 位置:R0 被淘汰。然后 B0 移动到 Bludger 位置:B0 也被淘汰。

在第四个样例中,红队球员接住了 Golden Snitch。其队伍得 10 分,比赛结束。

你可以在本题的简单版本中找到更多样例。

由 ChatGPT 4.1 翻译

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

首页