AT_utpc2023_f.Flip or Not

通过率:0%

AC君温馨提醒

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

题目描述

有 NN 张卡片横向排列成一行。最初,如果字符串 SS 的第 ii 个字符为 1,则从左数第 ii 张卡片正面朝上,为 0 时反面朝上。

你可以进行至多 10610^6 次如下操作:

  • 将最右边的一张卡片移动到最左边。如果被移动的卡片正面朝上,则将从左数第 A1,A2,…,APA_1,A_2,\dots,A_P 张卡片的正反面全部翻转。然后,可以选择将从左数第 B1,B2,…,BQB_1,B_2,\dots,B_Q 张卡片的正反面全部翻转,或者什么都不做。

经过若干次操作后,你希望卡片的状态满足字符串 TT ——也就是说,如果 TT 的第 ii 个字符为 1,则从左数第 ii 张卡片正面朝上,为 0 时反面朝上。

请判断是否能在不超过 10610^6 次操作内满足条件。如果可以,请输出一种操作次数最小的操作序列。

输入格式

输入从标准输入中读入,格式如下:

N S T P A1 A2 … AP Q B1 B2 … BQN\ S\ T\ P\ A_1\ A_2\ \dots\ A_P\ Q\ B_1\ B_2\ \dots\ B_Q

输出格式

如果无论如何都无法在 10610^6 次以内达成要求,请输出 -1。

如果可以达成,请输出一组操作次数最小的方案:

M UM\ U

其中 MM 表示操作次数,UU 是由 0 和 1 组成的长度为 MM 的字符串。UU 的第 ii 个字符为 1 表示第 ii 次操作需要将从左数第 B1,B2,…,BQB_1,B_2,\dots,B_Q 张卡片的正反面全部翻转;为 0 表示不翻转。

输入输出样例

  • 输入#1

    5
    00001
    00111
    3
    1 2 3
    2
    3 5

    输出#1

    4
    1001
  • 输入#2

    4
    0110
    1000
    2
    1 2
    4
    1 2 3 4

    输出#2

    -1

说明/提示

样例解释 1

在第 1 次操作时,先将最右的卡片移到最左边,卡片状态变为 10000,由于被移动的卡片正面朝上,翻转从左数第 A1,A2,A3A_1,A_2,A_3 张(即第 1、2、3 张),状态变为 01100。之后选择将第 B1,B2B_1,B_2 张(第 3、5 张)卡片翻转,状态变为 01001。按照输出例继续操作,第 2 次变为 01000,第 3 次变为 00100,第 4 次变为 00111。不存在更少操作次数的方案,因此输出例是正确的。

样例解释 2

无论如何操作,都无法在 10610^6 次以内完成,所以输出 -1。

约束条件

  • 输入的所有数值均为整数。
  • 1≤N≤50001 \leq N \leq 5000
  • S,TS, T 为长度为 NN 仅由 0, 1 组成的字符串
  • S≠TS \neq T
  • 1≤P,Q≤N1 \leq P, Q \leq N
  • 1≤A1<A2<⋯<AP≤N1 \leq A_1 < A_2 < \dots < A_P \leq N
  • 1≤B1<B2<⋯<BQ≤N1 \leq B_1 < B_2 < \dots < B_Q \leq N

由 ChatGPT 5 翻译

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

首页