【POJ 3321】Apple Tree
有n个节点以1为根节点的树,给你树的边关系u-v,一开始每个节点都有一个苹果,接下来有两种操作,C x改变节点x的苹果状态,Q x查询x为根的树的所有苹果个数。
#include<cstdio>
#define N 100005
using namespace std;
int n,m,id,cnt;
int q[N],st[N],ed[N],head[N];
int rl[N<<],rr[N<<],sum[N<<];
struct edge{
int to,next;
}e[N<<];
void add(int u,int v){
e[++cnt]=(edge){v,head[u]};
head[u]=cnt;
}
void dfs(int x,int fa){
st[x]=++id;
for(int i=head[x];i;i=e[i].next)
if(e[i].to!=fa)
dfs(e[i].to,x);
ed[x]=id;
}
void build(int k,int l,int r){
rl[k]=l;rr[k]=r;
if(l==r){
sum[k]=;
return;
}
int mid=l+r>>;
build(k<<,l,mid);
build(k<<|,mid+,r);
sum[k]=sum[k<<]+sum[k<<|];
}
int query(int k,int a,int b){
int l=rl[k],r=rr[k];
if(a<=l&&r<=b) return sum[k];
if(b<l||a>r)return ;
return query(k<<,a,b)+query(k<<|,a,b);
}
void modify(int k,int x){
int l=rl[k],r=rr[k],mid=(l+r)>>;
if(l==r){
sum[k]^=;
return;
}
if(x<=mid)modify(k<<,x);
else modify(k<<|,x);
sum[k]=sum[k<<]+sum[k<<|];
}
int main(){
scanf("%d",&n);
for(int i=;i<n;i++){
int u,v;
scanf("%d%d",&u,&v);
add(u,v);
add(v,u);
}
dfs(,);
scanf("%d",&m);
build(,,n);
for(int i=;i<=m;i++){
char op;
scanf(" %c",&op);
int x;
scanf("%d",&x);
if(op=='Q')
printf("%d\n",query(,st[x],ed[x]));
else
modify(,st[x]);
}
return ;
}
树状数组
#include<cstdio>
#define N 100005
using namespace std;
int n,m,id,cnt;
int q[N],st[N],ed[N],head[N];
int cal[N],a[N];
struct edge{
int to,next;
}e[N<<];
void add(int u,int v){
e[++cnt]=(edge){v,head[u]};
head[u]=cnt;
}
void dfs(int x,int fa){
st[x]=++id;
for(int i=head[x];i;i=e[i].next)
if(e[i].to!=fa)
dfs(e[i].to,x);
ed[x]=id;
}
int getsum(int x){
int s=;
for(;x;x-=x&(-x))s+=cal[x];
return s;
}
void update(int v,int x){
for(;x<=n;x+=x&(-x))cal[x]+=v;
}
int main(){
scanf("%d",&n);
for(int i=;i<n;i++){
int u,v;
scanf("%d%d",&u,&v);
add(u,v);add(v,u);
}
dfs(,);
scanf("%d",&m);
for(int i=;i<=n;i++)update(,i);
for(int i=;i<=m;i++){
char op;
scanf(" %c",&op);
int x;
scanf("%d",&x);
if(op=='C'){
update(a[x]?:-,st[x]);
a[x]^=;
}
else
printf("%d\n",getsum(ed[x])-getsum(st[x]-));
}
return ;
}
【POJ 3321】Apple Tree的更多相关文章
- 【POJ 2486】 Apple Tree(树型dp)
[POJ 2486] Apple Tree(树型dp) Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8981 Acce ...
- 【POJ 2486】 Apple Tree (树形DP)
Apple Tree Description Wshxzt is a lovely girl. She likes apple very much. One day HX takes her to a ...
- POJ 3321:Apple Tree + HDU 3887:Counting Offspring(DFS序+树状数组)
http://poj.org/problem?id=3321 http://acm.hdu.edu.cn/showproblem.php?pid=3887 POJ 3321: 题意:给出一棵根节点为1 ...
- 【树形dp】Apple Tree
[poj2486]Apple Tree Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10800 Accepted: 3 ...
- 【codeforces 348B】Apple Tree
[题目链接]:http://codeforces.com/problemset/problem/348/B [题意] 给你一棵树; 叶子节点有权值; 对于非叶子节点: 它的权值是以这个节点为根的子树上 ...
- POJ 3321:Apple Tree 树状数组
Apple Tree Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 22131 Accepted: 6715 Descr ...
- POJ 3321:Apple Tree(dfs序+树状数组)
题目大意:对树进行m次操作,有两类操作,一种是改变一个点的权值(将0变为1,1变为0),另一种为查询以x为根节点的子树点权值之和,开始时所有点权值为1. 分析: 对树进行dfs,将树变为序列,记录每个 ...
- 【POJ - 2385】Apple Catching(动态规划)
Apple Catching 直接翻译了 Descriptions 有两棵APP树,编号为1,2.每一秒,这两棵APP树中的其中一棵会掉一个APP.每一秒,你可以选择在当前APP树下接APP,或者迅速 ...
- 【POJ 1741】Tree
Tree Time Limit: 1000MS Memory Limit: 30000K Total Submissions: 11570 Accepted: 3626 Description ...
随机推荐
- 如何在Actionbarsherlock中一直显示overflow效果?
对Android开发一致性有一定考虑的程序员应当或多或少对Actionbarsherlock这个库有一定的了解.Actionbarsherlock的产生是因为Android在3.0(API 11)之后 ...
- ajax asud模板
<table class="table"> <tr> <th>@Html.DisplayNameFor(model=>model.Id)& ...
- JSTL中的TLD配置和使用。
一,JSTL介绍: JSTL标签库,是日常开发经常使用的,也是众多标签中性能最好的.把常用的内容,放在这里备份一份,随用随查.尽量做到不用查,就可以随手就可以写出来.这算是Java程序员的基本功吧,一 ...
- BZOJ 1024 【SCOI2009】 生日快乐
Description windy的生日到了,为了庆祝生日,他的朋友们帮他买了一个边长分别为 X 和 Y 的矩形蛋糕.现在包括windy,一共有 N 个人来分这块大蛋糕,要求每个人必须获得相同面积的蛋 ...
- Typescript 其实就想排个序和枚举取数
Typescript里的sort和C#差不多,但是略有不太一样,反正官方文档没说明白,就自己研究吧 list =list.sort((n1,n2) => { if(n1 > n2) { r ...
- codevs2693 上学路线(施工)
难度等级:黄金 2693 上学路线(施工) 题目描述 Description 问题描述 你所在的城市街道好像一个棋盘,有a条南北方向的街道和b条东西方向的街道. 南北方向a条街道从西到东依次编号为1到 ...
- NOI2018准备Day3
noip2016成绩出来了,199,268名 noip2017需要考过6个女生才能进省队,不包括明年会突然跳出来的大神...... 今天晚上玩了一晚上,做了2道题. 这事儿只干今晚一次
- GBK 编码时 url 中带中文参数的问题
项目中遇到的 GBK 编码问题,记录如下. 将代码精简为: <!DOCTYPE HTML> <html> <meta charset="gb2312" ...
- 【分布式协调器】Paxos的工程实现-Cocklebur状态转移
集群中的主机经过选举过程由Looking状态变为了Leadering或Following状态.而这些状态之间转移的条件是什么呢?先来个直观的,上状态图. 图 4.1 Cocklebur选举过程中的状态 ...
- 关于BOM
BOM:浏览器对象模型 (Browser Object Model)主要定义的是JS操作浏览器的方法和属性. 大部分方法都在window下. 常用方法:(JS里面规定如果方法前面是window,win ...