Apple Tree
Time Limit: 2000MS |
|
Memory Limit: 65536K |
Total Submissions: 27092 |
|
Accepted: 8033 |
Description
There is an apple tree outside of kaka's house. Every autumn, a lot of apples will grow in the tree. Kaka likes apple very much, so he has been carefully nurturing the big apple tree.
The tree has N forks which are connected by branches. Kaka numbers the forks by 1 to N and the root is always numbered by 1. Apples will grow on the forks and two apple won't grow on the same fork. kaka wants to know how many apples are there in a sub-tree, for his study of the produce ability of the apple tree.
The trouble is that a new apple may grow on an empty fork some time and kaka may pick an apple from the tree for his dessert. Can you help kaka?

Input
The first line contains an integer N (N ≤ 100,000) , which is the number of the forks in the tree.
The following N - 1 lines each contain two integers u and v, which means fork u and fork v are connected by a branch.
The next line contains an integer M (M ≤ 100,000).
The following M lines each contain a message which is either
"C x" which means the existence of the apple on fork x has been changed. i.e. if there is an apple on the fork, then Kaka pick it; otherwise a new apple has grown on the empty fork.
or
"Q x" which means an inquiry for the number of apples in the sub-tree above the fork x, including the apple (if exists) on the fork x
Note the tree is full of apples at the beginning
Output
For every inquiry, output the correspond answer per line.
Sample Input
3
1 2
1 3
3
Q 1
C 2
Q 1
Sample Output
3
2
Source
题意:
一棵苹果树,每个节点最多结一个苹果,最初每个节点都有一个苹果,非二叉树,有两种操作,Q X,表示X节点的子树共有几个苹果,C X,表示X节点摘掉一个苹果或长出一个苹果(有就摘,没有就长)
aaarticlea/jpeg;base64,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" alt="" />
代码:
/*
挺好的一道题,本题要重新建立树状数组,用dfs从树根开始搜,每搜到一个点他的左值记录该点的新序号,他的
右值记录改点的子树中的最大深度,这样每个点就变成了树状数组中的C数组参考上图,然后套树状数组区间求和的模板就行了。
注意本题如果用vector会很费时,vector<int>a[MAX]会超时,vector<vector<int> > a(MAX) 985ms过了(后面这个什么鬼!)。
不如自己建树用时会更少。
*/
#include<iostream>
#include<cstdio>
#include<vector>
#include<cstring>
using namespace std;
const int MAX=;
int c[MAX];
int lef[MAX],rig[MAX];
int n,m;
int rot;
int head[MAX];
int lne;
//vector<int>a[MAX];
//vector<vector<int> > a(MAX);
struct node
{
int to,next;
}a[MAX];
void tadd(int u,int v)
{
a[lne].to=v;
a[lne].next=head[u];
head[u]=lne++;
}
int lowbit(int x)
{
return x&(-x);
}
void add(int id,int val)
{
while(id<=n)
{
c[id]+=val;
id+=lowbit(id);
}
}
int sum(int id)
{
int sum=;
while(id>)
{
sum+=c[id];
id-=lowbit(id);
}
return sum;
}
void dfs(int x)
{
lef[x]=rot;
//for(int i=0;i<a[x].size();i++)
for(int i=head[x];i!=-;i=a[i].next)
{
rot++;
//dfs(a[x][i]);
dfs(a[i].to);
}
rig[x]=rot;
}
int main()
{
int x,y;
char ch[];
int flag[MAX];
scanf("%d",&n);
for(int i=;i<=n;i++)
{
flag[i]=;
add(i,);
}
lne=;
memset(head,-,sizeof(head));
for(int i=;i<n;i++)
{
scanf("%d%d",&x,&y);
//a[x].push_back(y);
tadd(x,y);
}
rot=;
dfs();
scanf("%d",&m);
while(m--)
{
scanf("%s%d",ch,&x);
if(ch[]=='C')
{
if(flag[lef[x]])
add(lef[x],-);
else add(lef[x],);
flag[lef[x]]=!flag[lef[x]];
}
else
{
printf("%d\n",sum(rig[x])-sum(lef[x]-));
}
}
return ;
}
- poj 3321(树状数组)
Apple Tree Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 24954 Accepted: 7447 Descr ...
- 【BZOJ】2434: [Noi2011]阿狸的打字机 AC自动机+树状数组+DFS序
[题意]阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机.打字机上只有28个按键,分别印有26个小写英文字母和'B'.'P'两个字母. 经阿狸研究发现,这个打字机是这样工作的: l 输入小写 ...
- POJ 3321 Apple Tree (树状数组+dfs序)
题目链接:http://poj.org/problem?id=3321 给你n个点,n-1条边,1为根节点.给你m条操作,C操作是将x点变反(1变0,0变1),Q操作是询问x节点以及它子树的值之和.初 ...
- POJ 3321 Apple Tree 树状数组+DFS
题意:一棵苹果树有n个结点,编号从1到n,根结点永远是1.该树有n-1条树枝,每条树枝连接两个结点.已知苹果只会结在树的结点处,而且每个结点最多只能结1个苹果.初始时每个结点处都有1个苹果.树的主人接 ...
- BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]
2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 2545 Solved: 1419[Submit][Sta ...
- 【BZOJ-3881】Divljak AC自动机fail树 + 树链剖分+ 树状数组 + DFS序
3881: [Coci2015]Divljak Time Limit: 20 Sec Memory Limit: 768 MBSubmit: 508 Solved: 158[Submit][Sta ...
- 【BZOJ-1103】大都市meg 树状数组 + DFS序
1103: [POI2007]大都市meg Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2009 Solved: 1056[Submit][Sta ...
- POJ 2352Stars 树状数组
Stars Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 42898 Accepted: 18664 Descripti ...
- BZOJ 1103 [POI2007]大都市meg(树状数组+dfs序)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1103 [题目大意] 给出一棵树,每条边的经过代价为1,现在告诉你有些路不需要代价了, ...
随机推荐
- HDU 5213 Lucky 莫队+容斥
Lucky Problem Description WLD is always very lucky.His secret is a lucky number K.k is a fixed odd n ...
- 聊聊传统oo和js的某些对比——对象/函数/new关键字等
自己的学习记录,写的短点可以以后短时间内理清一些疑惑,看前要求你至少了解js中关于原型链等基本概念,因为文章直接以总结的形式理出知识点,没有去解释一些基本的概念! 1.1.熟记两句话,预预热 1. 函 ...
- Vs2012调试本地windows服务
背景: 在我的工作经历中,我用到了一个我们以前学习中没有接触过的老东西-服务.之所说以前没有接触过,是因为自己没有系统的研究过这东西:之所以又说它是老东西,是因为我们其实早就知道他的存在,经常用它去干 ...
- document.body.scrollTop
标准浏览器:document.documentElement.scrollTop; 谷歌浏览器:document.body.scrollTop; var scrollTop = document.do ...
- Build an ETL Pipeline With Kafka Connect via JDBC Connectors
This article is an in-depth tutorial for using Kafka to move data from PostgreSQL to Hadoop HDFS via ...
- HDU 2222 Keywords Search (AC自动机)
题意:给你一些模式串,再给你一串匹配串,问你在匹配串中出现了多少种模式串,模式串可以相同 AC自动机:trie树上进行KMP.首先模式串建立trie树,再求得失配指针(类似next数组),其作用就是在 ...
- Java利用POI导入导出Excel中的数据
首先谈一下今天发生的一件开心的事,本着一颗android的心我被分配到了PB组,身在曹营心在汉啊!好吧,今天要记录和分享的是Java利用POI导入导出Excel中的数据.下面POI包的下载地 ...
- JavaScript入门(2)
encodeURI()和 decodeURI()作用 编码与解码 encodeURIComponent()和 decodeURIComponent()作用区别是 后者可以处理一些特殊字符进行转义 ...
- H5危险的文件上传对话框
文件对话框 文件上传对话框是一直以来就存在的网页控件. 到了 HTML5 时代,增加了更多的功能,例如支持文件多选.Chrome 甚至还支持「上传文件夹」这一私有特征: <input type= ...
- Linux IO模型和网络编程模型
术语概念描述: IO有内存IO.网络IO和磁盘IO三种,通常我们说的IO指的是后两者. 阻塞和非阻塞,是函数/方法的实现方式,即在数据就绪之前是立刻返回还是等待. 以文件IO为例,一个IO读过程是文件 ...