题目背景

刚立完Flag我就挂了WC和THUWC。。。

时间限制0.5s,空间限制128MB

因为Claris大佬帮助一周目由乃通过了Deus的题,所以一周目的由乃前往二周目世界找雪辉去了

由于二周目世界被破坏殆尽,所以由乃和雪辉天天都忙着重建世界(其实和MC差不多吧),Deus看到了题问她,总是被告知无可奉告

Deus没办法只能去三周目世界问三周目的由乃OI题。。。

三周目的世界中,因为没有未来日记,所以一切都很正常,由乃天天认真学习。。。

因为Deus天天问由乃OI题,所以由乃去学习了一下OI

由于由乃智商挺高,所以OI学的特别熟练

她在RBOI2016中以第一名的成绩进入省队,参加了NOI2016获得了金牌保送

洛谷P3613 睡觉困难综合征

Deus:这个题怎么做呀?

yuno:这个不是NOI2014的水题吗。。。

Deus:那如果出到树上,多组链询问,带修改呢?

yuno:诶。。。???

Deus:这题叫做睡觉困难综合征哟~

虽然由乃OI很好,但是她基本上不会DS,线段树都只会口胡,比如她NOI2016的分数就是100+100+100+0+100+100。。。NOIP2017的分数是100+0+100+100+0+100

所以她还是只能找你帮她做了。。。

题目描述

由乃这个问题越想越迷糊,已经达到了废寝忘食的地步。结果她发现……晚上睡不着了!只能把自己的一个神经元(我们可以抽象成一个树形结构)拿出来,交给Deus。

这个神经元是一个有n个点的树,每个点的包括一个位运算opt和一个权值x,位运算有&,l,^三种,分别用1,2,3表示。

为了治疗失眠,Deus可以将一些神经递质放在点x上,初始的刺激值是洛谷P3613 睡觉困难综合征。然后v依次经过从x到y的所有节点,每经过一个点i,v就变成v opti xi,所以他想问你,最后到y时,希望得到的刺激值尽可能大,所以最大值的v可以是多少呢?当然由于初始的神经递质的量有限,所以给定的初始值洛谷P3613 睡觉困难综合征必须是在[0,z]之间。Deus每次都会给你3个数,x,y,z。

不过,Deus为了提升治疗效果,可能会对一些神经节点进行微调。在这种情况下,也会给三个数x,y,z,意思是把x点的操作修改为y,数值改为z

 

输入输出格式

输入格式:

 

第一行三个数n,m,k。k的意义是每个点上的数,以及询问中的数值z都 $<

2^k$。之后n行,每行两个数x,y表示该点的位运算编号以及数值

之后n - 1行,每行两个数x,y表示x和y之间有边相连

之后m行,每行四个数,Q,x,y,z表示这次操作为Q(1位询问,2为更改),x,y,z意义如题所述

 

 

输出格式:

 

对于每个操作1,输出到最后可以造成的最大刺激度v

 

输入输出样例

输入样例#1:
5 5 3
1 7
2 6
3 7
3 6
3 1
1 2
2 3
3 4
1 5
1 1 4 7
1 1 3 5
2 1 1 3
2 3 3 3
1 1 3 2
输出样例#1:
7
1
5
输入样例#2:
2 2 2
2 2
2 2
1 2
2 2 2 2
1 2 2 2
输出样例#2:
3

说明

对于30%的数据,n,m <= 1

对于另外20%的数据,k <= 5

对于另外20%的数据,位运算只会出现一种

对于100%的数据,0 <= n , m <= 100000 , k <= 64

 

 

树 LCT 位运算 贪心

略神的题。

基本的操作@NOI2014起床困难综合征

出到树上的话,用bitset存结点的真值表,用LCT维护一下树链,update的时候合并真值表即可。

要注意的是,LCT在reverse的时候左右子树,update的运算顺序会与实际不符。为了维护正确顺序,需要同时更新链上正向运算真值表和反向运算真值表,交换子树的时候把真值表交换。

↑否则WA一半数据(居然只有一半)

 1 5 10 5
 2 2 4
 3 1 9
 4 3 9
 5 3 15
 6 1 7
 7 1 2
 8 1 4
 9 2 5
10 2 3
11 1 1 3 31
12 1 1 5 31
13 1 4 3 28
14 1 3 4 28
15 1 5 4 27
16 1 4 5 27
17 1 5 4 27
18 1 4 3 28
19 1 3 4 28
hack

相关文章: