比赛场次 | 354 |
---|---|
比赛名称 | 寒假颓废练习 |
比赛状态 | 已结束比赛成绩 |
开始时间 | 2017-01-25 18:00:00 |
结束时间 | 2017-01-25 23:00:00 |
开放分组 | 全部用户 |
注释介绍 | 新年新颓废 |
题目名称 | 黑白树的操作 |
---|---|
输入输出 | MD5.in/out |
时间限制 | 5000 ms (5 s) |
内存限制 | 512 MiB |
测试点数 | 20 简单对比 |
用户 | 结果 | 时间 | 内存 | 得分 |
---|---|---|---|---|
Go灬Fire | WWWWWWWWWWWWWWWWWWWW |
0.008 s | 10.04 MiB | 0 |
AntiLeaf | WWWWWWWWWWWWWWWWWWWW |
0.026 s | 2.69 MiB | 0 |
FoolMike | WTTTTTWTWWTTTTTTTTTT |
80.894 s | 96.64 MiB | 0 |
【题目描述】
不要紧张。题目的名字只是一个MD5。
小A有一堆小圆点。某天,他无聊了,于是他想把这些点连成一棵无根树。
小A觉得他不能放过这个防AK的好机会,于是他想借此考考你。
一开始,小A有n个点,这n个点分别编号为1~n。每个点都有颜色,任何时刻,点的颜色都只能是黑白两种颜色之一。初始时,所有点都是白色的。
小A一共会进行m次操作,每次操作只可能是以下的三种之一:
A u v w:添加一条连接(u,v)的无向边,长度为w。
C u:反转点u的颜色,即如果点u原来是白色则反转后会变成黑色,反之亦然。
Q u:询问所有与点u连通的黑点到点u的距离之和。定义连通的两点间的距离为两点间简单路径上的边长度之和。
因为小A觉得这个问题太简单了,所以他决定强制在线。
【输入格式】
第一行一个整数T,表示测试点编号。
第二行两个整数n,m,分别表示点的个数和操作数。
以下m行,每行描述一个操作,格式如上所述。
为了防止你采用各种离线算法水掉本题,本题强制在线,每次输入的整数均需异或(上一次询问的答案mod n)。如果还没有进行询问,那么上一次询问的答案是0。
注意,mod n是在n的剩余系下,比如-1 mod 5 = 4.
【样例输入】
3 7
A 1 2 3
C 1
Q 2
Q 3
A 2 3 1
C 2
Q 3
【样例输出】
3
0
5
【样例解释】
样例输入解密后为
3 7
A 1 2 3
C 1
Q 2
Q 3
A 2 3 1
C 2
Q 3
【数据范围与约定】
本题共有20个测试点,每个测试点的数据范围和特殊性质如下:
测试点编号 |
n |
m |
特殊性质 |
1 |
=10 |
=30 |
无 |
2 |
<=100 |
<=200 |
|
3 |
<=500 |
||
4 |
|||
5 |
<=500 |
<=1000 |
|
6 |
|||
7 |
<=2000 |
<=5000 |
所有A操作在其他操作之前 |
8 |
无 |
||
9 |
<=50000 |
<=200000 |
具有以下两个测试点的特殊性质 |
10 |
所有A操作在其他操作之前 |
||
11 |
树的形态随机 |
||
12 |
每个点的度不超过2 |
||
13 |
<=100000 |
<=300000 |
无 |
14 |
|||
15 |
|||
16 |
|||
17 |
|||
18 |
|||
19 |
|||
20 |
|||
1~20 |
保证所有边的长度绝对值<=10000 |
你可以假定给出的所有操作均合法,即进行A操作后一定不会产生环,给出的点的编号都在1~n之内。但请注意,数据不保证最后得到的一定是一棵树(也即所有点可能不连通)。