QOJ.ac

QOJ

时间限制: 2 s 内存限制: 512 MB 总分: 100 可 Hack ✓

#21426. 三生三世的财富

统计

题目背景

“好孩子,假如给你三生三世的财富,学否?”

今天,玛德琳和坏德琳来到了一个梦幻的机器面前。机器里面有四种颜色的球,各有各的用处。蓝色弹球是最基础的弹球,你弹上去会获得一次冲刺能力。粉色弹球是加强版,你弹上去会获得两次冲刺。白色弹球弹上去不能获得冲刺。黄色弹球弹了一次之后会长出刺,并且以后你不能在接触它。

这里面的关卡可以通过一个颜色序列来描述。玛德琳和坏德琳在里面玩了很久,但还没通过第一关。于是玛德琳急哭了!她决定通过修改器作弊!这个修改器很特别,只能修改白弹球和黄弹球,且只能修改成蓝弹球和粉弹球,而且每一次被修改的弹球位置是确定的。而坏德琳得知了此事,她决定阻止玛德琳作弊,所以黑了这个修改器,获得了修改黄弹球颜色的权限。同时,玛德琳认为,一连串相同的弹球会让关卡变得简单。她认为一个关卡的简单度是同色段长度的最大值。玛德琳想要最大化这个值,而坏德琳想要最小化这个值。

题目描述

Alice 和 Bob 在一个长度为 $n$ 的序列上博弈。序列中每个元素的值只能是 $0$ 或 $1$,且每个元素的取值时刻在游戏开始前就已确定。

给定长度为 $n$ 的序列 $p$ 和 $a$,其中 $p$ 是 $1\dots n$ 的一个排列,$a_i\in\{-2,-1,0,1\}$。

序列的第 $i$ 个元素会在第 $p_i$ 个时刻确定取值,规则如下:

  • 若 $a_i=0$,则该元素被赋值为 $0$;
  • 若 $a_i=1$,则该元素被赋值为 $1$;
  • 若 $a_i=-1$,则该元素的值由 Alice 在该时刻决定;
  • 若 $a_i=-2$,则该元素的值由 Bob 在该时刻决定。

游戏开始前,Alice 和 Bob 都知道序列 $p$ 和序列 $a$。游戏共进行 $n$ 个时刻,第 $k$ 个时刻确定的是满足 $p_i=k$ 的那个位置 $i$ 的取值;$n$ 个时刻结束后,序列的每个元素都恰好被确定了一次取值。

同色连续段被定义为一个二元组 $(l,r)$ 满足 $l\le r$,且第 $l$ 个元素到第 $r$ 个元素的值全部相同;若它不能再向左右延伸(即 $l=1$ 或第 $l-1$ 个元素与它们不同,且 $r=n$ 或第 $r+1$ 个元素与它们不同),则称它是一个极长同色连续段。$(l,r)$ 的长度为 $r-l+1$。

Alice 希望最大化第 $n$ 个时刻后序列所有极长同色连续段长度的最大值,Bob 希望最小化该值。

给定正整数 $typ \in \{1,2\}$。

如果 $typ=1$,双方都会按最优策略行动,请求出最终序列极长同色连续段长度的最大值。可以证明答案是确定的。

如果 $typ=2$,额外给出长度为 $n$ 的序列 $A$。$A_i \in \{0,1\}$,表示博弈的第 $i$ 个时刻发生的决策为:令 $x$ 为唯一满足 $p_x=i$ 的 $1,2,\dots,n$ 中的正整数,将序列的第 $x$ 个元素赋值为 $A_i$ (可能发生宇宙射线击中了第 $x$ 个位置导致 $a_x,A_i \in \{0,1\}$ 且 $a_x \neq A_i$ 的情况)。请求出对于 $i=0,1,\dots,n$,如果第 $i$ 个时刻及之前都按照 $A$ 序列的决策博弈,第 $i$ 个时刻结束后双方都按最优策略行动,最终序列中最长同色连续段的长度 $ans_i$。

输入格式

本题强制在线

第一行包含一个正整数 $T$,表示数据组数。

接下来一共 $T$ 组数据,在每组数据中:

第一行包含两个正整数 $n$ 和 $typ$。

第二行包含 $n$ 个整数 $p_1,p_2,\dots,p_n$。

第三行包含 $n$ 个整数 $a_1,a_2,\dots,a_n$。

如果 $typ=2$,第四行包含 $n$ 个整数 $A'_1,A'_2,\dots,A'_n$。

真正的 $A_i$ 为 $A'_i$ 与 $ans_{i-1}$ 按位异或后模 $2$ 的结果。

输出格式

对于每一组数据:

如果 $typ=1$ 输出一行一个整数,表示双方都按最优策略行动时,最终序列中最长同色连续段的长度。

如果 $typ=2$ 输出一行 $n+1$ 个整数,表示对于 $i=0,1,\dots,n$,如果第 $i$ 个时刻及之前都按照 $A$ 序列的决策博弈,第 $i$ 个时刻结束后双方都按最优策略行动,最终序列中最长同色连续段的长度。

样例

样例输入 #1

1
3 1
3 1 2
-1 -2 -1

样例输出 #1

3

样例解释 #1

$p=[3,1,2]$ 表示 $p_1=3,\ p_2=1,\ p_3=2$:第 $1$ 个元素在第 $3$ 个时刻确定,第 $2$ 个元素在第 $1$ 个时刻确定,第 $3$ 个元素在第 $2$ 个时刻确定。于是时刻顺序为:

  • 时刻 $1$:确定第 $2$ 个元素($a_2=-2$,由 Bob 决定);
  • 时刻 $2$:确定第 $3$ 个元素($a_3=-1$,由 Alice 决定);
  • 时刻 $3$:确定第 $1$ 个元素($a_1=-1$,由 Alice 决定)。

Alice 想要最长同色段尽可能长,Bob 想要尽可能短。Bob 虽然先手,但只掌控正中间的第 $2$ 个元素;Alice 掌控第 $1$、$3$ 两个端点元素。

Bob 把第 $2$ 个元素定为 $0$ 后,Alice 可以把第 $1$、$3$ 个元素也都定为 $0$,最终序列为 0 0 0,最长同色段长度为 $3$;Bob 若把第 $2$ 个元素定为 $1$,Alice 同样都取 $1$,最终序列为 1 1 1,最长同色段长度仍为 $3$。

Bob 的两种选法导致的结果完全相同,他无法把答案压到 $3$ 以下;而 Alice 也至多让整个序列同色,故答案为 $3$。

样例输入 #2

1
2 1
2 1
-1 -1

样例输出 #2

2

样例解释 #2

$p=[2,1]$ 表示 $p_1=2,\ p_2=1$:第 $1$ 个元素在第 $2$ 个时刻确定,第 $2$ 个元素在第 $1$ 个时刻确定。两个元素的 $a$ 值都是 $-1$,故都由 Alice 决定:

  • 时刻 $1$:确定第 $2$ 个元素($a_2=-1$,由 Alice 决定);
  • 时刻 $2$:确定第 $1$ 个元素($a_1=-1$,由 Alice 决定)。

Alice 想要最大化最长同色段。两个元素都由她决定,她只要给两者赋相同的值,就得到 0 0 或 1 1,此时 $(1,2)$ 是长度为 $2$ 的极长同色连续段;而序列总长度只有 $2$,故这也是她能取得的最好结果。

样例输入 #3

3
2 1
1 2
-1 -2
4 2
1 3 2 4
-1 0 -2 -1
1 0 0 1
3 1
3 1 2
0 0 1

样例输出 #3

1
2 2 3 2 2
2

数据范围

本题开启合理的子任务依赖。

对于所有数据,保证:

  • $1 \leq T \leq 2 \times 10^5$, $1\le n\le 2\times 10^5$, $1 \le typ \le 2$, $1 \leq \sum n \leq 2 \times 10^5$。

  • $p$ 是 $1\dots n$ 的一个排列。

  • $a_i\in\{-2,-1,0,1\}$。

  • $A_i\in\{0,1\}$。

子任务编号 $T \leq$ $n \leq$ $typ=$ $\sum n \leq$ 特殊性质 分值
$1$ $2 \times 10^5$ $2 \times 10^5$ $1$ $2 \times 10^5$ A $3$
$2$ $40$ $20$ $2$ $40$ 无 $9$
$3$ $200$ $200$ $1$ $200$ $10$
$4$ $2$ $8$
$5$ $2000$ $1000$ $1$ $2000$ $8$
$6$ $2 \times 10^5$ $2 \times 10^5$ $2 \times 10^5$ B $14$
$7$ $2$ $11$
$8$ $1$ 无 $17$
$9$ $2$ $20$

特殊性质 A: 保证 $a_i\in\{0,1\}$。

特殊性质 B: 保证 $p$ 和 $a$ 在长度为 $n$ 且符合限制的序列中随机生成。

注意:子任务 $2$ 被子任务 $3,4,5,8,9$ 依赖。

Editorials

IDTypeStatusTitlePosted ByLast UpdatedActions
EditorialOpen Official EditorialQingyu- Download
#3111EditorialOpen$O(n)$ Solution by 不是佛学工作者UrdView

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.