type link=^node;
node=record
po:longint;
next:link;
end;
var w:array[..] of link;
c,h,f,a:array[..] of longint;
v:array[..] of boolean;
t,r,n,m,i,x,y:longint;
ch:char; function lowbit(x:longint):longint;
begin
exit(x and (-x));
end; procedure add(x,y:longint);
var p:link;
begin
new(p);
p^.po:=y;
p^.next:=w[x];
w[x]:=p;
end; procedure dfs(i:longint);    //映射
var tmp,y:longint;
p:link;
begin
v[i]:=true;
p:=w[i];
tmp:=n+;
while p<>nil do
begin
y:=p^.po;
if not v[y] then
begin
dfs(y);
if tmp>f[y] then tmp:=f[y];
end;
p:=p^.next;
end;
inc(t);
h[i]:=t;
if tmp<>n+ then
f[i]:=tmp
else f[i]:=h[i];
end; procedure work(x,f:longint);
begin
while x<=n do
begin
c[x]:=c[x]+f;
x:=x+lowbit(x);
end;
end; function ask(x:longint):longint;
begin
ask:=;
while x> do
begin
ask:=ask+c[x];
x:=x-lowbit(x);
end;
end; begin
readln(n);
for i:= to n- do
begin
readln(x,y);
add(x,y);
add(y,x);
a[i]:=;
end;
a[n]:=;
dfs();
for i:= to n do
work(i,);
readln(m);
for i:= to m do
begin
readln(ch,r);
if ch='Q' then
begin
x:=f[r];
y:=h[r];
writeln(ask(y)-ask(x-));
end
else begin
x:=h[r];
if a[x]= then work(x,)   //细节题目要求没苹果的时候加苹果
else work(x,-);
a[x]:=a[x] xor ;
end;
end;
end.

type link=^node;

node=record

po:longint;

next:link;

end;

var w:array[0..100100] of link;

c,h,f,a:array[0..100100] of longint;

v:array[0..100100] of boolean;

t,r,n,m,i,x,y:longint;

ch:char;

function lowbit(x:longint):longint;

begin

exit(x and (-x));

end;

procedure add(x,y:longint);

var p:link;

begin

new(p);

p^.po:=y;

p^.next:=w[x];

w[x]:=p;

end;

procedure dfs(i:longint);    //映射

var tmp,y:longint;

p:link;

begin

v[i]:=true;

p:=w[i];

tmp:=n+1;

while p<>nil do

begin

y:=p^.po;

if not v[y] then

begin

dfs(y);

if tmp>f[y] then tmp:=f[y];

end;

p:=p^.next;

end;

inc(t);

h[i]:=t;

if tmp<>n+1 then

f[i]:=tmp

else f[i]:=h[i];

end;

procedure work(x,f:longint);

begin

while x<=n do

begin

c[x]:=c[x]+f;

x:=x+lowbit(x);

end;

end;

function ask(x:longint):longint;

begin

ask:=0;

while x>0 do

begin

ask:=ask+c[x];

x:=x-lowbit(x);

end;

end;

begin

readln(n);

for i:=1 to n-1 do

begin

readln(x,y);

add(x,y);

add(y,x);

a[i]:=1;

end;

a[n]:=1;

dfs(1);

for i:=1 to n do

work(i,1);

readln(m);

for i:=1 to m do

begin

readln(ch,r);

if ch='Q' then

begin

x:=f[r];

y:=h[r];

writeln(ask(y)-ask(x-1));

end

else begin

x:=h[r];

if a[x]=0 then work(x,1)   //细节题目要求没苹果的时候加苹果

else work(x,-1);

a[x]:=a[x] xor 1;

end;

end;

end.

## poj3321的更多相关文章

1. poj3321 dfs序+树状数组单点更新 好题！

当初听郭炜老师讲时不是很懂,几个月内每次复习树状数组必看的题 树的dfs序映射在树状数组上进行单点修改,区间查询. /* 树状数组: lowbit[i] = i&-i C[i] = a[i-l ...

2. POJ3321 Apple Tree (JAVA)

树形数组题,有一定难度. 首先得搞清楚树形数组是什么 - 它是建立在原始数组上的统计数组 - 目的:方便对原始数组进行切片统计,主要用于统计切片的累加和 其实你可以对切片进行扫描,把元素一个一个加起来 ...

3. poj3321（dfs序+树状数组）

题目链接:https://vjudge.net/problem/POJ-3321 题意:给一个普通树(不是二叉树),并且已经编号,每个结点为1或0,有两种操作,对单个结点修改和查询一个结点的子树的所有 ...

4. 【POJ3321】Apple Tree（DFS序，树状数组）

题意:给一棵n个节点的树,每个节点开始有一个苹果,m次操作 1.将某个结点的苹果数异或 1 2.查询一棵子树内的苹果数 n,m<=100000   思路:最近一段时间在思考树上统计问题的算法 发 ...

5. [poj3321]Apple Tree_dfs序_树状数组

Apple Tree poj-3321 题目大意:给你一个根固定的树,每一个点的点权是0或1,查询子树点权和. 注释:\$1\le n \le 10^5\$. 想法:刚刚学习dfs序,刷到水题偶哈哈. 什 ...

6. POJ3321 Apple Tree(树状数组)

先做一次dfs求得每个节点为根的子树在树状数组中编号的起始值和结束值,再树状数组做区间查询 与单点更新. #include<cstdio> #include<iostream> ...

7. [poj3321]Apple Tree(dfs序+树状数组)

Apple Tree Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 26762   Accepted: 7947 Descr ...

8. POJ3321 Apple Tree（DFS序）

题目,是对一颗树,单点修改.子树查询.典型的dfs序入门题. DFS序可以将一颗树与子树们表示为一个连续的区间,然后用线段树来维护:感觉算是树链剖分的一种吧,和轻重链剖分不同的是这是对子树进行剖分的. ...

9. POJ3321 Apple Tree （树状数组）

Apple Tree Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 16180   Accepted: 4836 Descr ...

## 随机推荐

1. Linux学习日记-MVC的部署(三)

一.Mvc与wcf 相对WCF的部署MVC还是有点麻烦,我们要考虑哪些dll是不需要的,哪些是要拷贝到本地的. 而WCF因为有些配置文件不支持,我们只需要在配置wcf时不使用配置文件而直接使用代码就行 ...

2. 解决IIS Express 80端口被占用的情况

VS2012运行站点的时候提示“无法启动IIS Express Web服务器,端口80正在使用” 于是CMD查看了一下端口使用情况,并且在任务管理器中查看相应的进程,但始终觉得不对,因为显示是Syst ...

3. 【转载】Deep Learning（深度学习）学习笔记整理

http://blog.csdn.net/zouxy09/article/details/8775360 一.概述 Artificial Intelligence,也就是人工智能,就像长生不老和星际漫 ...

4. 【转】COCOS2D-X之CCHttpRequest下载图片Demo

#include "pthread.h" #pragma comment(lib,"libcurl_imp.lib") #pragma comment(lib, ...

5. JMX学习笔记(三)-MXBean

在MBean中有只要遵循以下两个规则,我们就可以在jconsole中动态的改变MBean中的属性值 1. JMX中要定义接口必须以xxxMBean的规范定义 2. 得有类实现xxxMBean接口 例如 ...

6. spring boot整合mybatis方式一

方式一: 导入maven依赖: <!--web依赖配置--> <dependency> <groupId>org.springframework.boot</ ...

7. .net之设计模式

在上一篇文章里我通过具体场景总结了“.net面向对象的设计原则”,其中也多次提到一些设计模式方面的技术,可想而知,设计模式在我们的开发过程中也是必不可少的.今天我们就来简单交流下设计模式.对于设计模式 ...

8. Log4Net使用学习笔记

项目源文件下载https://files.cnblogs.com/files/ckym/Log4NetTestSourceCode.zip Log4net是一款非常好用的日志记录的框架,使用它可以实现 ...

9. Baidu地图Map api直接加https不起作用

这种情况一般出现在v1.1等老版本上,加s=1也不起作用,尽量使用新版本. https://api.map.baidu.com/api?v=2.0&ak=你的密钥&s=1:

10. 如何发布自己的 jar 包到 maven 中央仓库（待更新...）

参考链接 如何发布自己的 jar 包到 maven 中央仓库