#P14135. 【MX-X22-T6】「TPOI-4F」Miserable EXperience

【MX-X22-T6】「TPOI-4F」Miserable EXperience

题目背景

安慰一个伤心的人,真的好困难呢……

在好友最需要自己的时候,明明有很多话可说,却只会“好惨”“拍拍”“抱抱”什么的,真的很让人自责啊。

如果萝卜能让所有人对感情认真起来,像她这样被伤害的人,是不是就会少一些呢?

题目描述

小 C 被分手了,这让小 C 联想起了许多不高兴的事,她现在很伤心。而小萝卜正在试图让她的心重归平静。

现在有 nn 个事件困扰着小 C。根据小 C 的联想过程,这些事件可以看做一棵根为 11 的外向树,其中边 (u,v)(u,v) 表示 vv 是由 uu 联想产生的,而点 11 到点 uu 的距离称作 uu 的联想距离。同时每件事 uu 都有一个难过程度 aua_u

小萝卜每次可以进行两种操作其一:

  • 安慰小 C:选择一个事件并将其子树内所有事件的难过程度 1-1
  • 抱抱小 C:选择一个数 xx 并将所有联想距离为 xx 的点的难过程度 1-1

对于每个点 uu,设 ansuans_u 表示使 uu 子树内的所有事件的难过程度都恰好00 的最少操作数(uu 子树外的事件没有限制),无解则 ansu=1ans_u=-1。小萝卜需要对所有 ii 求出 ansians_i。其中各询问独立。

特别地,为防止输出量过多,只需要输出所有 ansi+1ans_i+1 的异或和即可。保证做法与此部分无关。

由于小 C 快要破防了,小萝卜只有 0.5 s 的时间。

输入格式

由于输入量过大,本题输入文件经过了压缩。你可以通过以下代码来获取树上每个节点 uu 的父亲 pup_u 与点权 aua_u

const int MAXN = 1e6 + 10;

int n, p[MAXN], a[MAXN]; char buf[1 << 24];

inline 
void read() {
	scanf("%d%s", &n, buf);
	for (int i = 2, j = 0; i <= n; i++) {
		for (; ~buf[i + j - 2] & 1; j++);
		p[i] = j;
	}
	scanf("%s", buf);
	for (int i = 1, j = 0; i <= n; i++) {
		a[i] |= buf[j++] - 33 << 24;
		a[i] |= buf[j++] - 33 << 18;
		a[i] |= buf[j++] - 33 << 12;
		a[i] |= buf[j++] - 33 << 6;
		a[i] |= buf[j++] - 33;
	}
}

输出格式

输出一行,一个整数,表示 i=1n(ansi+1)\bigoplus^n_{i=1}(ans_i+1) 的值。

5
011011
!!!!$!!!!*!!!!&!!!!+!!!!+

0
10
0110011011001101
!!!!F!!!!\!!!![!!!!]!!!!!!!!!"!!!!)!!!!<!!!!B!!!!2

84
30
01100110110010101101010011001101100010100110011010101011
!"8\W!'`ZP!&FV]!(:^T!,3=<!.`:Y!0QB<!1011!0V\]!2I`3!2EU0!1D!A!2W9R!3&9!!2TU$!3[07!5JB>!5PRL!69JG!<^0"!@15"!E!&=!DX^"!KZ$I!IGQ6!R(*G!S3`E![NHW!U>NB!\AC]

5120225

提示

【样例解释 #1】

样例 11 解密后的输入如下:

5
1 1 2 2
3 9 5 10 10

对于 u=1u=1,其中一种最优的操作方案如下:

  • 选择事件 11 安慰小 C 33 次。之后 aa{0,6,2,7,7}\{0,6,2,7,7\}
  • 选择事件 22 安慰小 C 66 次。之后 aa{0,0,2,1,1}\{0,0,2,1,1\}
  • 选择事件 33 安慰小 C 22 次。之后 aa{0,0,0,1,1}\{0,0,0,1,1\}
  • 选择联想深度 22 抱抱小 C 11 次。之后 aa{0,0,0,0,0}\{0,0,0,0,0\}

需要 1212 次操作。可以证明并不存在更优的操作方案。对于事件 u=15u=1\sim 5ansuans_u 分别为 12,10,5,10,1012,10,5,10,10ansu+1ans_u+1 的异或和为 00,故输出 00

【数据范围】

本题采用捆绑测试。

子任务编号 nn\le aia_i\le 特殊性质 分值
11 55 1010 55
22 100100 ^ 1212
33 10310^3 10910^9 AB 66
44 ^ ^ A 88
55 B 99
66 1212
77 2×1052\times10^5 B 1313
88 ^ 1414
99 10610^6 ^ 2121
  • 特殊性质 A:对于任意 2un2 \le u \le n,保证 pu=u1p_u=u-1
  • 特殊性质 B:对于任意 2un2 \le u \le n,保证 auapua_u\ge a_{p_u}

对于所有数据,保证 1n1061\le n\le 10^60ai1090\le a_i\le 10^91pi<i1\le p_i<i