AT_arc199_b.[ARC199B] Adjacent Replace

省选/NOI-

通过率:0%

AC君温馨提醒

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

题目描述

给定一个长度为 NN 的非负整数序列 A=(A1,A2,…,AN)A=(A_1,A_2,\ldots,A_N) 和一个非负整数 KK。

请判断是否可以通过不超过 10410^4 次以下操作使得 A1=KA_1=K。

  • 选择一个整数 i (1≤i≤N−1)i\ (1\leq i\leq N-1),令 x=Ai⊕Ai+1x=A_i\oplus A_{i+1},然后将 AiA_i 和 Ai+1A_{i+1} 都替换为 xx。

这里,⊕\oplus 表示按位异或(XOR)运算。

如果可能,请输出一种满足条件的操作步骤。

有 TT 组测试数据,请分别作答。

按位异或(XOR)运算的定义如下:对于非负整数 A,BA,B,A⊕BA\oplus B 的二进制表示中,第 2k2^k 位(k≥0k\geq 0)的数为 A,BA,B 的二进制表示中第 2k2^k 位的数中恰有一个为 11 时为 11,否则为 00。

例如,3⊕5=63\oplus 5=6(二进制表示为:011⊕101=110011\oplus 101=110)。

输入格式

输入按以下格式从标准输入读入。

TT
case1\mathrm{case}_1
case2\mathrm{case}_2
⋮\vdots
caseT\mathrm{case}_T

每组测试数据格式如下:

N K A1 A2 … ANN\ K\ A_1\ A_2\ \ldots\ A_N

输出格式

请按顺序输出每组测试数据的答案。

如果无法通过不超过 10410^4 次操作使 A1=KA_1=K,输出 No。

如果可以,请输出操作步骤,格式如下:

Yes MM i1i_1 i2i_2 …\ldots iMi_M

其中,MM 表示操作次数,ij (1≤j≤M)i_j\ (1\leq j\leq M) 表示第 jj 次操作选择的整数 ii。要求 0≤M≤104, 1≤ij≤N−10\leq M\leq 10^4,\ 1\leq i_j\leq N-1。

如果存在多种满足条件的操作方案,输出任意一种均可。

输入输出样例

  • 输入#1

    5
    3 5
    2 3 4
    3 0
    2 3 4
    3 8
    2 3 4
    3 2
    2 3 4
    4 10
    2 3 4 8

    输出#1

    Yes
    2
    2 1
    Yes
    3
    1 1 1
    No
    Yes
    0
    
    Yes
    4
    2 3 2 1

说明/提示

数据范围

  • 1≤T≤501\leq T\leq 50
  • 3≤N≤603\leq N\leq 60
  • 0≤Ai,K<2600\leq A_i,K<2^{60}
  • 输入均为整数

样例解释 1

对于第 11 组测试数据,可以按如下方式操作使 A1=5A_1=5。

  1. 选择 i=2i=2,A=(2,7,7)A=(2,7,7)。
  2. 选择 i=1i=1,A=(5,5,7)A=(5,5,7)。

对于第 22 组测试数据,可以按如下方式操作使 A1=0A_1=0。

  1. 选择 i=1i=1,A=(1,1,4)A=(1,1,4)。
  2. 选择 i=1i=1,A=(0,0,4)A=(0,0,4)。
  3. 选择 i=1i=1,A=(0,0,4)A=(0,0,4)。

对于第 33 组测试数据,无法通过不超过 10410^4 次操作使 A1=8A_1=8。

由 ChatGPT 4.1 翻译

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

首页