AT_agc074_b.[AGC074B] Swap if Equal Length and Sum
NOI/NOI+/CTSC
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定两个长度为 N、每个元素为 0 或 1 的整数序列 A=(A1,A2,…,AN) 和 B=(B1,B2,…,BN)。令 A[i,j] 表示序列 A 中从第 i 个到第 j 个元素的连续子序列。如果 i>j,则 A[i,j] 为长度为 0 的序列。你可以对 A 最多进行 ⌊2N⌋ 次如下操作:
- 选择四个整数 a,b,c,d,满足以下三个条件:
- 1≤a≤b<c≤d≤N
- b−a=d−c
- ∑i=abAi=∑i=cdAi
- 将 A[a,b] 和 A[c,d] 交换。更准确地说,用以下顺序拼接得到的新序列替换 A:A[1,a−1],A[c,d],A[b+1,c−1],A[a,b],A[d+1,N]。
判断是否有可能通过若干次操作后使 A 与 B 完全相同。如果可以,请构造出一组操作方案。
对于每组输入,需要解答 T 个独立的测试用例。
输入格式
输入从标准输入读入,格式如下:
T
case1
case2
⋮
caseT
每个测试用例如下格式:
N
A1 A2 … AN
B1 B2 … BN
输出格式
按以下格式输出答案:
output1
output2
⋮
outputT
其中 outputt 表示第 t 个测试用例的输出。
对于每个测试用例,如果你可以将 A 变为 B,记所用操作次数为 K,每次操作所选的参数为 (ak,bk,ck,dk),则输出格式如下:
Yes K a1 b1 c1 d1 a2 b2 c2 d2
⋮
aK bK cK dK
如果无法将 A 变为 B,则输出 No。
输入输出样例
输入#1
3 8 1 0 0 1 0 1 0 1 0 0 1 1 1 0 1 0 2 0 0 1 0 3 1 1 1 1 1 1
输出#1
Yes 2 3 4 6 7 1 4 5 8 No Yes 0
说明/提示
样例解释 1
第一个测试用例中,初始 A 为 (1,0,0,1,0,1,0,1)。
先进行一次 (a,b,c,d)=(3,4,6,7) 的操作,A 变为 (1,0,1,0,0,0,1,1)。
再进行一次 (a,b,c,d)=(1,4,5,8) 的操作,A 变为 (0,0,1,1,1,0,1,0),与 B 完全相同。
第二个测试用例,无论如何无法将 A 变为 B。
第三个测试用例,A 一开始就与 B 完全相同,无需操作。
数据范围与约定
- 1≤T≤25000
- 2≤N≤2×105
- 0≤Ai≤1
- 0≤Bi≤1
- 所有测试用例中 N 的总和不超过 2×105。
- 所有输入均为整数。
由 ChatGPT 5 翻译
输入解题思路,AI测评打分。不知道怎么写?