AT_masters_qual_a.Smoothing by Swaps
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
有一个 N×N 的棋盘。棋盘的左上角坐标是 (0,0),从这个位置向下移动 i 格、向右移动 j 格的格子坐标为 (i,j)。整个棋盘的边缘是围墙,并且在某些相邻格子之间也可能有墙。两个格子如果紧挨且之间没有墙,我们称它们为「相邻格子」。
每个格子 (i,j) 上都有一个从 1 到 N2 的不重复数字 a(i,j)。高桥君和青木君可以从棋盘上的任意位置开始,进行最多 4N2 次以下操作:
- 他们可以在当前格子交换各自的数字。
- 高桥君可以移动到相邻的无墙格子。
- 青木君也可以移动到相邻的无墙格子。
这些操作按照 1→2→3 的顺序依次进行,并视为一个完整的操作。可以选择在不交换数字的情况下直接移动,或者在交换后不移动。两人也可以同时在同一个格子上。
请合理地设计两人的行动方案,使最终相邻格子上数字的差尽量小。
输入格式
输入为标准输入,格式如下:
t N v0,0⋯v0,N−2 ⋮ vN−1,0⋯vN−1,N−2 h0,0⋯h0,N−1 ⋮ hN−2,0⋯hN−2,N−1 a0,0⋯a0,N−1 ⋮ aN−1,0⋯aN−1,N−1
- t 表示输入生成方式,为 0≤t≤19 的整数,详情请参阅相关部分。
- 棋盘大小 N 满足 10≤N≤100。
- vi,0⋯vi,N−2 是由
0和1组成的 N−1 个字符的字符串,若 vi,j=1 表示 (i,j) 与 (i,j+1) 之间有墙,vi,j=0 没有墙。 - hi,0⋯hi,N−1 是一个长度为 N 的字符串,同样由
0和1组成,hi,j=1 表示 (i,j) 和 (i+1,j) 之间有墙,hi,j=0 无墙。 - 保证所有格子间相互可达。
- ai,j 表示初始状态下格子 (i,j) 上的数字,满足 1≤ai,j≤N2。
输出格式
首先,选择高桥君的初始位置 (pi,pj) 和青木君的初始位置 (qi,qj),然后在一行输出这两个位置:
pi pj qi qj
初始位置可以在棋盘范围内任意选择。
接着,对于每个操作,以如下格式输出一行,共 k 行:
s d e
- s 是一个字符,表示是否交换数字,
1为交换,0为不交换。 - d 是表示高桥君移动方向的字符:向上、下、左、右分别为
UDLR,不移动为.。 - e 是表示青木君移动方向的字符,与高桥君的相同规则。
移动如果导致越过墙壁或操作次数超过 4N2,将会判定为错误(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
说明/提示
为评估最终结果,设所有相邻格子对的集合为 E,我们关注相邻格子间数字差异的平方和 ∑u,v∈E(au−av)2。设初始状态下的平方和为 D′,最终状态下为 D,得分公式如下:
[
\max\left(1, \mathrm{round}\left(10^6 \times \log_2 \frac{D'}{D}\right)\right)
]
共有 200 个测试用例,每个 t∈{0,1,⋯,19} 各 10 个,测试总得分为所有用例得分之和。每个 t 值构成的测试集独立评分,输出格式错误或超时将导致该测试集得分为 0。比赛期间所得最高得分将决定最终排名,无系统测试。相同得分者排名并列。
生成 a 以外输入是固定的,由输入生成种子值模 20 决定,见输入生成器的 in_fixed/t.txt。每个 t 值测试用例各 10 个。每个格子的数字 ai,j 是通过随机排列 1 到 N2 生成的。
工具(输入生成器和得分计算程序)
- 源代码:需安装 Rust 编译环境。
- Windows 二进制文件:不愿配置 Rust 时的替代选择。
注意:比赛期间禁止分享可视化结果或讨论算法和思路。
本翻译由 AI 自动生成
输入解题思路,AI测评打分。不知道怎么写?