2014北京网络预选赛1008(线段树区间操作)HDU5039
2014-09-23 18:17
381 查看
Hilarity
Time Limit: 12000/6000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 211 Accepted Submission(s): 51
Problem Description
After June 1st, elementary students of Ted Land are still celebrating "The Sacred Day of Elementary Students”. They go to the streets and do some elementary students stuff. So we call them "elementary students". There are N cities in Ted Land. But for simplicity,
the mayor Matt only built N - 1 roads so that all cities can reach each other. Some of the roads are occupied by the "elementary students". They will put an celebration hat on everyone who goes through the road without one. But if someone goes through the
road with a celebration hat on his head, "elementary students" will steal the hat for no reason. Since Matt doesn’t have a celebration hat, he wants to know how many different paths in his land that he can end up with a hat. Two paths are considered to be
different if and only if they have different start city or end city. As the counsellor of the mayor Matt, you have to answer this question for him. The celebration elementary students are not stable: sometimes a new crowd of elementary students go to an empty
road; sometimes the elementary students on a road will go back home and remain the road empty. Matt will send you the monitor about the change of elementary students on road and ask you the question above. You will be fired if you answer wrong.
Input
The first line of the input contains an integer T, denoting the number of testcases. Then T test cases follow.
For each test case, the first line contains N (1<=N<=30000) describing the number of cities.
Then N lines follow. The ith line of these contains the name of the ith city, it’s a string containing only letters and will not be longer than 10.
The following N - 1 lines indicate the N - 1 edges between cities. Each of these lines will contain two strings for the cities’ name and a integer for the initial status of the edge (0 for empty, 1 for crowded).
Then an integer M (1<=M<=60000) describes the number of queries. There are two kinds of query:
● "M i" means the status changing of the ith (starting from 1) road (0 to 1, 1 to 0);
● "Q" means that Matt asks you the number of different paths.
Output
For each test case, first output one line “Case #x:”, where x is the case number (starting from 1).
Then for each “Q” in input, output a line with the answer.
Sample Input
1 5 a b c d e a b 1 b c 0 c d 1 d e 1 7 Q M 1 Q M 3 Q M 4 Q
Sample Output
Case #1: 12 8 8 0
题意:给出一棵n个点的树,边权为0或1,可以修改任何一条边的值,查询整棵树上有多少对u,v之间路径的异或值为1
思路:首先根据异或的性质不难发现求xor(u,v)=xor(1,u)^xor(1,v)
所以可以用线段树维护每个xor(1,u)
1.修改操作,假如要修改u与其父亲的边,则以u为根的子树的xor全都改变了,即取反
所以可以先将整棵树的用DFS序列化,也就是所谓的树形转线性,每个节点及其子树都是一段连续的线段
2.查询,直接查询整个线段就好了
相关文章推荐
- 2014多校10(1003)hdu4973(简单线段树区间操作)
- 2014多校5(1003)hdu4913(线段树区间操作)
- HDU5039--Hilarity DFS序+线段树区间更新 14年北京网络赛
- Necklace (线段树单点更新+区间查询+离线操作)
- poj3225 线段树区间操作 (见鬼)
- [Usaco2008 Nov]lites 开关灯 线段树 区间异或及求和操作
- 【POJ 3667 】 线段树之区间操作
- POJ 3667 Hotel 带区间合并操作的线段树
- HDU 4902 Nice boat 2014杭电多校训练赛第四场F题(线段树区间更新)
- ZOJ Monthly, March 2014,3765 Lights (Splay 基本操作,并维护区间上的信息 * 模板)
- POJ2528 线段树的区间操作
- 线段树(成段更新,区间求和lazy操作 )
- coj 1123 带区间操作的线段树(lazy)
- 线段树(成段更新,区间求和lazy操作 )
- UVA 11992- Fast Matrix Operations(线段树区间各种操作)
- HDU 4578 线段树区间更新(确定区间操作的优先级)
- poj 1436 线段树区间操作 Horizontally Visible Segments
- POJ 3225 Help with Intervals 线段树区间操作
- 【HDU 2871 Memory Control】线段树之区间操作
- poj 1177 又是一道十分恶心到线段树。 主要是用线段树到区间操作。可以用来节省线性查找的时间。 离散化也十分好的一道题。