日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > 綜合技術 > poj-3321 Apple Tree

poj-3321 Apple Tree

來源:程序員人生   發布時間:2015-08-13 08:10:13 閱讀次數:2528次

題意:

給定1棵有根樹,開始時每一個節點有蘋果;

有兩種操作 C x :使x節點的狀態改變,有果子變成沒有,沒有就變成有;

Q x :查詢x節點子樹上的果子總數;

n,m<=1^5

題解:

范圍明顯不能爆搜,所以我們在求和的時候不能枚舉;

可以想到用樹狀數組來保護和;

所以基本想法就是使子樹們各自在1個區間上,然后樹狀數組保護;

制作這個區間就用dfs,回溯時正好記錄了整棵子樹的信息;

具體還是看代碼吧,深搜的進程之類的;

卡vector


代碼:

#include<stdio.h> #include<string.h> #include<algorithm> #define N 100001 using namespace std; int next[N<<1],head[N],to[N<<1]; int tree[N],data[N],en[N],tot,cnt; bool a[N]; char str[100]; void add(int x,int y) { to[++cnt]=y; next[cnt]=head[x]; head[x]=cnt; } int lowbit(int k) { return k&(-k); } void update(int k,int val) { while(k<=N) { tree[k]+=val; k+=lowbit(k); } } int query(int k) { int ret=0; while(k) { ret+=tree[k]; k-=lowbit(k); } return ret; } void dfs(int x,int pre) { int i,y; update(x,1); a[x]=1; data[x]=++tot; for(i=head[x];i;i=next[i]) { if((y=to[i])!=pre) { dfs(y,x); } } en[x]=tot; } int main() { int n,m,i,j,k,x,y; scanf("%d",&n); for(i=1;i<n;i++) { scanf("%d%d",&x,&y); add(x,y),add(y,x); } dfs(1,0); scanf("%d ",&m); for(i=1;i<=m;i++) { scanf("%s",str); if(str[0]=='C') { scanf("%d",&x); if(a[x]) a[x]=0,update(data[x],⑴); else a[x]=1,update(data[x], 1); } else { scanf("%d",&x); printf("%d ",query(en[x])-query(data[x]⑴)); } } return 0; }


生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 亚洲第一天堂 | 欧美日韩激情一区 | 欧美专区在线观看 | 亚洲天堂免费观看 | 精品久久久久久亚洲精品 | 青青草青青操 | 欧美在线二区 | 亚洲精品乱码久久久久久 | av2区 | 精品视频网站 | 久久成| 一二三区在线 | 一区二区三区精品在线 | 日韩av免费在线观看 | 中文资源在线观看 | 999国产精品| 成人在线黄色电影 | 欧美日韩亚洲综合 | 亚洲黄色精品 | 久久精品免费观看 | 青草青草久| 男人天堂国产 | 黄色免费av | 日韩不卡在线视频 | 亚洲免费观看视频 | 国产精品区一区二区三含羞草 | 日韩 国产 在线 | 欧美中文在线观看 | 99久久精品一区字幕狠狠婷婷 | 日韩美女视频 | 99久久精品免费看国产免费软件 | 精品一区二区久久 | 在线国产一区二区 | 国产精品亚洲一区二区三区在线观看 | 日韩一区二区三区在线 | 黄色美女免费网站 | 久久久福利视频 | 久久99精品久久久久久久久久久久 | 国产精品伦一区二区三级视频 | 亚洲美女视频 | 国产精品亚洲综合 |