正题


题意

有一颗树,开始每个点的值都是1,有两种操作:
1.将一个点的值取反
2.询问一个子树的值的和


解题思路

用后续遍历就可以做到用一个区间代表一棵子树。然后用线段树就好了。


代码

#include<cstdio>
using namespace std;
struct line{int to,next;
}a[100001];
int tot,x,y,num[100001],c[100001],ls[100001],m;
int n,begin[100001],mark[100001];
bool apple[100001];
char cc;
void dfs(int x)
{begin[x]=tot;for (int q=ls[x];q;q=a[q].next){dfs(a[q].to);}mark[x]=++tot;
}//深搜求后序遍历
int lowbit(int x)
{return x&(-x);}
void change(int x,int num)//改变
{int i=x;while(i<=n){c[i]+=num;i+=lowbit(i);}
}
int getsum(int x)//求和
{int sum=0;while (x>0){sum+=c[x];x-=lowbit(x);}return sum;
}
int main()
{scanf("%d",&n);for (int i=1;i<n;i++){scanf("%d%d",&x,&a[i].to);a[i].next=ls[x];ls[x]=i;//插入边change(i,1);//改值}change(n,1);dfs(1);//后序遍历scanf("%d",&m);for (int i=1;i<=m;i++){scanf("\n%c %d",&cc,&x);if (cc=='C'){apple[x]=!apple[x];if (apple[x])change(mark[x],-1);else change(mark[x],1);//该值取反}else{printf("%d\n",getsum(mark[x])-getsum(begin[x]));//输出}}
}

P3321-Apple Tree【树状数组】相关推荐

  1. Apple Tree树状数组、前向星、DFS序(C语言)

    Apple Tree树状数组.前向星.DFS序(C语言) 题目 输入值 第一行包含一个整数Ñ(Ñ ≤100,000),这是树中的叉的数量. 接下来的N -1行分别包含两个整数u和v,这意味着fork ...

  2. poj 3321 Apple Tree 树状数组

    http://poj.org/problem?id=3321 一棵树,开始时每个结点都有一个苹果,输入C x表示更新x结点,若x结点有苹果,把该结点苹果摘掉,若该节点无苹果,在该节点上增加一个新的苹果 ...

  3. 树状数组 | 1057

    用哈希,把push的数x作为下标给hashTable(实则不存在,直接用tree树状数组记录数据)+1,pop则是以最后一个数x作为下标-1 . 树状数组和其原理不再赘述,需要注意的是最后的二分搜索( ...

  4. 【LCT】【树状数组】Matches Are Not a Child‘s Play(luogu CF1137F)

    正题 luogu CF1137F 题目大意 定义一棵树的产出序列为依次删除权值最小的叶子节点的顺序 进行q此操作: 1.把一个点的权值改为当前树中的最大权值+1 2.查询一个点在删除序列中的位置 3. ...

  5. 【POJ - 3321】 Apple Tree(dfs序 + 线段树维护 或 dfs序 + 树状数组维护)

    题干: There is an apple tree outside of kaka's house. Every autumn, a lot of apples will grow in the t ...

  6. Apple Tree(dfs序+树状数组)

    题目(传送门poj3321) Apple Tree Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 40714 Accepted: ...

  7. Apple Tree(树状数组+dfs序+邻接表数组(链式前向星) )

    链接:http://poj.org/problem?id=3321 Description There is an apple tree outside of kaka's house. Every ...

  8. Apple Tree(树状数组)

    描述 Happy Christmas! Kaka likes apple very much, Santa Claus presents an apple tree for kaka. In this ...

  9. poj 3321 Apple Tree(dfs序+树状数组求和模型)

    题目链接:http://poj.org/problem?id=3321 解题思路: 先dfs求出序列,将子树转化到dfs序列的区间内,接下来就是简单的树状数组求和模型了.水题. #include< ...

  10. 【POJ 3321】Apple Tree(树的dfs序+树状数组)

    传送门 Solution: 我们只需要采用和树链剖分近似的思想--把整个树的dfs序整理出来,排成线型. 这样一个节点的子树肯定是连续的一段,于是乎就可以用树状数组维护单点修改+区间查询的任务了. # ...

最新文章

  1. VMware Esxi5.1.0开启ssh服务的方法
  2. MySQL中地理位置数据扩展geometry的使用心得
  3. Some Essential JavaScript Questions And Answers(4)
  4. LintCode 6.合并排序数组 ||
  5. cad通过钢筋大样生成钢筋明细表插件_如何设计一套建筑电气CAD施工图?看完你就知道!涨知识...
  6. 会聊天到底有多重要?汽车语音识别大盘点
  7. 百度前端技术学院-精选笔记-1 HTML学习笔记
  8. API函数之GetUserName
  9. dnf打团正在连接服务器进不去是吗鬼,DNF韩服大转移版本开启 上线送迷你女鬼剑宠物...
  10. css加号图标_excel单元格加号展开折叠
  11. 私有云服务器和公有云服务器的区别你真的知道吗?
  12. 一个程序员购买保险之路-1(适用于所有人)
  13. 春天开始Spring
  14. 【填充插件】自定义填充图案制作插件
  15. C语言中scanf()常见的错误
  16. java基础-网络编程
  17. 『goodman1999』SD2.0大会:达内创始人韩少云:创业就像买股票
  18. Cashback [CodeForces - 940E]
  19. 基于SpringBoot的淘宝商城系统
  20. Linux实时调度策略(SCHED_RR)和CFS(SCHED_OTHER)之间的区别

热门文章

  1. n以内的素数c语言,关于求N以内素数的一点小问题(N小于一亿)
  2. 10 邮件槽_员工主动发离职邮件,提出申请又反悔,法院判决让人懵了!
  3. python编写正则表达式匹配单词_Python正则表达式匹配整个单词
  4. pandownload 卢本伟_PanDownload复活了!60MB/s!附下载地址
  5. srv.sys蓝屏解决补丁_Win10 补丁 KB4556799 导致部分用户蓝屏死机和网络问题
  6. 职称计算机还用考试,职称计算机考试注意事项
  7. pandas用均值填充nan_Pandas学习笔记(三)
  8. 西门子触摸屏脚本程序_通过驿唐PLC501远程下载Smart Line触摸屏
  9. [计组]寄存器和存储器的区别
  10. 数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型的概念