P3321-Apple Tree【树状数组】
正题
题意
有一颗树,开始每个点的值都是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【树状数组】相关推荐
- Apple Tree树状数组、前向星、DFS序(C语言)
Apple Tree树状数组.前向星.DFS序(C语言) 题目 输入值 第一行包含一个整数Ñ(Ñ ≤100,000),这是树中的叉的数量. 接下来的N -1行分别包含两个整数u和v,这意味着fork ...
- poj 3321 Apple Tree 树状数组
http://poj.org/problem?id=3321 一棵树,开始时每个结点都有一个苹果,输入C x表示更新x结点,若x结点有苹果,把该结点苹果摘掉,若该节点无苹果,在该节点上增加一个新的苹果 ...
- 树状数组 | 1057
用哈希,把push的数x作为下标给hashTable(实则不存在,直接用tree树状数组记录数据)+1,pop则是以最后一个数x作为下标-1 . 树状数组和其原理不再赘述,需要注意的是最后的二分搜索( ...
- 【LCT】【树状数组】Matches Are Not a Child‘s Play(luogu CF1137F)
正题 luogu CF1137F 题目大意 定义一棵树的产出序列为依次删除权值最小的叶子节点的顺序 进行q此操作: 1.把一个点的权值改为当前树中的最大权值+1 2.查询一个点在删除序列中的位置 3. ...
- 【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 ...
- Apple Tree(dfs序+树状数组)
题目(传送门poj3321) Apple Tree Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 40714 Accepted: ...
- Apple Tree(树状数组+dfs序+邻接表数组(链式前向星) )
链接:http://poj.org/problem?id=3321 Description There is an apple tree outside of kaka's house. Every ...
- Apple Tree(树状数组)
描述 Happy Christmas! Kaka likes apple very much, Santa Claus presents an apple tree for kaka. In this ...
- poj 3321 Apple Tree(dfs序+树状数组求和模型)
题目链接:http://poj.org/problem?id=3321 解题思路: 先dfs求出序列,将子树转化到dfs序列的区间内,接下来就是简单的树状数组求和模型了.水题. #include< ...
- 【POJ 3321】Apple Tree(树的dfs序+树状数组)
传送门 Solution: 我们只需要采用和树链剖分近似的思想--把整个树的dfs序整理出来,排成线型. 这样一个节点的子树肯定是连续的一段,于是乎就可以用树状数组维护单点修改+区间查询的任务了. # ...
最新文章
- VMware Esxi5.1.0开启ssh服务的方法
- MySQL中地理位置数据扩展geometry的使用心得
- Some Essential JavaScript Questions And Answers(4)
- LintCode 6.合并排序数组 ||
- cad通过钢筋大样生成钢筋明细表插件_如何设计一套建筑电气CAD施工图?看完你就知道!涨知识...
- 会聊天到底有多重要?汽车语音识别大盘点
- 百度前端技术学院-精选笔记-1 HTML学习笔记
- API函数之GetUserName
- dnf打团正在连接服务器进不去是吗鬼,DNF韩服大转移版本开启 上线送迷你女鬼剑宠物...
- css加号图标_excel单元格加号展开折叠
- 私有云服务器和公有云服务器的区别你真的知道吗?
- 一个程序员购买保险之路-1(适用于所有人)
- 春天开始Spring
- 【填充插件】自定义填充图案制作插件
- C语言中scanf()常见的错误
- java基础-网络编程
- 『goodman1999』SD2.0大会:达内创始人韩少云:创业就像买股票
- Cashback [CodeForces - 940E]
- 基于SpringBoot的淘宝商城系统
- Linux实时调度策略(SCHED_RR)和CFS(SCHED_OTHER)之间的区别
热门文章
- n以内的素数c语言,关于求N以内素数的一点小问题(N小于一亿)
- 10 邮件槽_员工主动发离职邮件,提出申请又反悔,法院判决让人懵了!
- python编写正则表达式匹配单词_Python正则表达式匹配整个单词
- pandownload 卢本伟_PanDownload复活了!60MB/s!附下载地址
- srv.sys蓝屏解决补丁_Win10 补丁 KB4556799 导致部分用户蓝屏死机和网络问题
- 职称计算机还用考试,职称计算机考试注意事项
- pandas用均值填充nan_Pandas学习笔记(三)
- 西门子触摸屏脚本程序_通过驿唐PLC501远程下载Smart Line触摸屏
- [计组]寄存器和存储器的区别
- 数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型的概念