AT_masters_qual_a.Smoothing by Swaps

通过率:0%

AC君温馨提醒

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

题目描述

有一个 N×NN \times N 的棋盘。棋盘的左上角坐标是 (0,0)(0,0),从这个位置向下移动 ii 格、向右移动 jj 格的格子坐标为 (i,j)(i,j)。整个棋盘的边缘是围墙,并且在某些相邻格子之间也可能有墙。两个格子如果紧挨且之间没有墙,我们称它们为「相邻格子」。

每个格子 (i,j)(i,j) 上都有一个从 11 到 N2N^2 的不重复数字 a(i,j)a_{(i,j)}。高桥君和青木君可以从棋盘上的任意位置开始,进行最多 4N24N^2 次以下操作:

  1. 他们可以在当前格子交换各自的数字。
  2. 高桥君可以移动到相邻的无墙格子。
  3. 青木君也可以移动到相邻的无墙格子。

这些操作按照 1→2→31 \rightarrow 2 \rightarrow 3 的顺序依次进行,并视为一个完整的操作。可以选择在不交换数字的情况下直接移动,或者在交换后不移动。两人也可以同时在同一个格子上。

请合理地设计两人的行动方案,使最终相邻格子上数字的差尽量小。

输入格式

输入为标准输入,格式如下:

tt NN v0,0⋯v0,N−2v_{0,0} \cdots v_{0,N-2} ⋮\vdots vN−1,0⋯vN−1,N−2v_{N-1,0} \cdots v_{N-1,N-2} h0,0⋯h0,N−1h_{0,0} \cdots h_{0,N-1} ⋮\vdots hN−2,0⋯hN−2,N−1h_{N-2,0} \cdots h_{N-2,N-1} a0,0⋯a0,N−1a_{0,0} \cdots a_{0,N-1} ⋮\vdots aN−1,0⋯aN−1,N−1a_{N-1,0} \cdots a_{N-1,N-1}

  • tt 表示输入生成方式,为 0≤t≤190 \leq t \leq 19 的整数,详情请参阅相关部分。
  • 棋盘大小 NN 满足 10≤N≤10010 \leq N \leq 100。
  • vi,0⋯vi,N−2v_{i,0} \cdots v_{i,N-2} 是由 0 和 1 组成的 N−1N-1 个字符的字符串,若 vi,j=1v_{i,j}=1 表示 (i,j)(i,j) 与 (i,j+1)(i,j+1) 之间有墙,vi,j=0v_{i,j}=0 没有墙。
  • hi,0⋯hi,N−1h_{i,0} \cdots h_{i,N-1} 是一个长度为 NN 的字符串,同样由 0 和 1 组成,hi,j=1h_{i,j}=1 表示 (i,j)(i,j) 和 (i+1,j)(i+1,j) 之间有墙,hi,j=0h_{i,j}=0 无墙。
  • 保证所有格子间相互可达。
  • ai,ja_{i,j} 表示初始状态下格子 (i,j)(i,j) 上的数字,满足 1≤ai,j≤N21 \leq a_{i,j} \leq N^2。

输出格式

首先,选择高桥君的初始位置 (pi,pj)(p_i, p_j) 和青木君的初始位置 (qi,qj)(q_i, q_j),然后在一行输出这两个位置:

pip_i pjp_j qiq_i qjq_j

初始位置可以在棋盘范围内任意选择。

接着,对于每个操作,以如下格式输出一行,共 kk 行:

ss dd ee

  • ss 是一个字符,表示是否交换数字,1 为交换,0 为不交换。
  • dd 是表示高桥君移动方向的字符:向上、下、左、右分别为 U D L R,不移动为 .。
  • ee 是表示青木君移动方向的字符,与高桥君的相同规则。

移动如果导致越过墙壁或操作次数超过 4N24N^2,将会判定为错误(WA)。

输入输出样例

  • 输入#1

    0 10
    000100001
    000100001
    000100001
    000100000
    001000010
    001000010
    001000010
    001000000
    000000000
    000000000
    0111111100
    1100000000
    0000000000
    1110000000
    0000000111
    0000000000
    0000111100
    0000000000
    0000000000
    2 47 60 6 76 72 52 90 19 77
    42 59 7 45 17 80 71 55 65 75
    16 21 35 9 15 95 50 91 54 20
    34 39 10 38 69 99 63 92 14 87
    36 89 41 81 97 78 56 30 68 98
    82 67 40 73 58 26 53 33 100 74
    4 12 28 64 31 37 62 24 70 93
    27 61 83 94 25 32 5 88 85 46
    29 13 8 86 66 57 44 23 48 11
    22 49 84 18 79 1 96 43 3 51

    输出#1

    0 0 0 1
    0 . R
    1 D L
    0 R .
    0 R .
    1 R L

说明/提示

为评估最终结果,设所有相邻格子对的集合为 EE,我们关注相邻格子间数字差异的平方和 ∑u,v∈E(au−av)2\sum_{u,v \in E} (a_u - a_v)^2。设初始状态下的平方和为 D′D',最终状态下为 DD,得分公式如下:

[
\max\left(1, \mathrm{round}\left(10^6 \times \log_2 \frac{D'}{D}\right)\right)
]

共有 200 个测试用例,每个 t∈{0,1,⋯ ,19}t \in \{0, 1, \cdots, 19\} 各 10 个,测试总得分为所有用例得分之和。每个 tt 值构成的测试集独立评分,输出格式错误或超时将导致该测试集得分为 0。比赛期间所得最高得分将决定最终排名,无系统测试。相同得分者排名并列。

生成 aa 以外输入是固定的,由输入生成种子值模 20 决定,见输入生成器的 in_fixed/t.txt。每个 tt 值测试用例各 1010 个。每个格子的数字 ai,ja_{i,j} 是通过随机排列 11 到 N2N^2 生成的。

工具(输入生成器和得分计算程序)

注意:比赛期间禁止分享可视化结果或讨论算法和思路。

本翻译由 AI 自动生成

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

首页