点我看题目 

题意 : 大概是说一颗树有n个分岔,然后给你n-1对关系,标明分岔u和分岔v是有边连着的,然后给你两个指令,让你在Q出现的时候按照要求输出。

思路 :典型的树状数组。但是因为没有弄好数组,所以要用DFS先映射一下,好吧我承认我说不下去了,六级没过,CF又掉了100多分,脑子完全不转转了。。。。。。

#include <iostream>
#include <stdio.h>
#include <string.h> using namespace std; const int maxn = ;
int head[maxn],start[maxn] ,num[maxn],data[maxn];
int m,n,cnt ,cntt;
bool vis[maxn] ; struct node
{
int l,r ;
int next ;
}Node[maxn] ; void addegde(int u,int v)
{
Node[cnt].l = u ;
Node[cnt].r = v ;
Node[cnt].next = head[u] ;
head[u] = cnt++ ;
} void dfs(int u)
{
start[u] = ++ cntt ;
vis[u] = true ;
for(int i = head[u] ; i+ ; i = Node[i].next)
{
int v = Node[i].r ;
if(!vis[v])
dfs(v) ;
}
num[u] = cntt ;
}
int lowbit(int x)
{
return x&(-x) ;
}
int sum(int i )
{
int summ = ;
while(i > )
{
summ += data[i] ;
i -= lowbit(i) ;
}
return summ ;
} void update(int i,int val)
{
while(i <= n)
{
data[i] += val ;
i += lowbit(i) ;
}
} int main()
{
while(~scanf("%d",&n))
{
cnt = cntt = ;
memset(head,-,sizeof(head)) ;
memset(num,,sizeof(num)) ;
memset(start,,sizeof(start)) ;
memset(data,,sizeof(data)) ;
memset(vis,false,sizeof(vis)) ;
int x,y ;
for(int i = ; i <= n- ; i++ )
{
scanf("%d %d",&x,&y) ;
addegde(x,y) ;
}
dfs() ;
for(int i = ; i <= n ; i++)
update(i,) ;
scanf("%d",&m) ;
getchar() ;
for(int j = ; j <= m ; j++)
{
char ch ;
scanf("%c",&ch) ;
if(ch == 'Q')
{
scanf("%d",&x) ;
printf("%d\n",sum(num[x])-sum(start[x]-)) ;
}
else if(ch == 'C')
{
scanf("%d",&x) ;
if(sum(start[x])-sum(start[x]-))
update(start[x],-) ;
else
update(start[x],) ;
}
getchar() ;
}
}
return ;
}

POJ 3321 Apple Tree(树状数组)的更多相关文章

  1. POJ 3321 Apple Tree(树状数组)

                                                              Apple Tree Time Limit: 2000MS   Memory Lim ...

  2. POJ 3321 Apple Tree (树状数组+dfs序)

    题目链接:http://poj.org/problem?id=3321 给你n个点,n-1条边,1为根节点.给你m条操作,C操作是将x点变反(1变0,0变1),Q操作是询问x节点以及它子树的值之和.初 ...

  3. POJ 3321 Apple Tree 树状数组+DFS

    题意:一棵苹果树有n个结点,编号从1到n,根结点永远是1.该树有n-1条树枝,每条树枝连接两个结点.已知苹果只会结在树的结点处,而且每个结点最多只能结1个苹果.初始时每个结点处都有1个苹果.树的主人接 ...

  4. POJ 3321 Apple Tree 树状数组 第一题

    第一次做树状数组,这个东西还是蛮神奇的,通过一个简单的C数组就可以表示出整个序列的值,并且可以用logN的复杂度进行改值与求和. 这道题目我根本不知道怎么和树状数组扯上的关系,刚开始我想直接按图来遍历 ...

  5. 3321 Apple Tree 树状数组

    LIANJIE:http://poj.org/problem?id=3321 给你一个多叉树,每个叉和叶子节点有一颗苹果.然后给你两个操作,一个是给你C清除某节点上的苹果或者添加(此节点上有苹果则清除 ...

  6. POJ 3321:Apple Tree 树状数组

    Apple Tree Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 22131   Accepted: 6715 Descr ...

  7. POJ--3321 Apple Tree(树状数组+dfs(序列))

    Apple Tree Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 22613 Accepted: 6875 Descripti ...

  8. E - Apple Tree(树状数组+DFS序)

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

  9. POJ3321 Apple Tree(树状数组)

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

  10. POJ 2486 Apple Tree [树状DP]

    题目:一棵树,每个结点上都有一些苹果,且相邻两个结点间的距离为1.一个人从根节点(编号为1)开始走,一共可以走k步,问最多可以吃多少苹果. 思路:这里给出数组的定义: dp[0][x][j] 为从结点 ...

随机推荐

  1. appium +python api 新手

    发现一个网址的内容比较好,就转过来了   #默认系统语言对应的Strings.xml文件内的数据. get_app_string() #查找某一个语言环境对应的字符串文件Strings.xml内数据 ...

  2. 【转】Monkeyrunner测试1——Monkeyrunner的使用

    Monkeyrunner的使用 一.终端输入单行命令行实现 1. 开启android 模拟器 (1) 用Eclipse打开andorid的模拟器 (2) 在CMD中用andorid命令打开模拟器 定位 ...

  3. xml的语法与创建

    xml语法很简单,但很严格,如果出现错误则不能正常解析,而HTML如果出现局部的错误,照样解析 xml第一行必须写xml头<?xml version='1.0' encoding='utf8'? ...

  4. SQL Server 2012 内存管理 (memory management) 改进

    SQL Server 2012 的内存管理和以前的版本相比,有以下的一些变化. 一.内存分配器的变化 SQL Server 2012以前的版本,比如SQL Server 2008 R2等, 有sing ...

  5. Android之Http网络编程(二)

    上一篇文章简单的介绍了Android中http的两种通信方式,并且分别用获取百度网页做了实例.但是在实际应用中,更多的是客户端通过请求的参数来实现在服务端的具体操作,并最终返回数据给客户端.因为我们不 ...

  6. 使用PHP连接、操纵Memcached的原理和教程

    http://www.crazyant.net/1014.html Memcahced开源分布式内存对象缓存系统通过减少数据库的负担,从而能够加速你的web应用.在本文中我将解释怎样实现一个基于Mem ...

  7. vs2010开发android的准备工作

    安装 Mono for Android for Visual Studio 2010 需要下面4个步骤: 安装 JDK 安装 Android SDK 配置模拟器 安装 Mono for Android ...

  8. 一 JavaScript应用开发实践指南

    渐进增强模型 总述: 结构层(Structure),表现层(presentation)与行为层(behavior). HTML,CSS,JavaScript. 只有HTML 的情况下也可以显示内容,C ...

  9. 1.MySQL的安装(linux Ubuntu环境下)

    首先先检验一下系统中是否已经安装有mysql: deamon@deamon-H55M-S2:~$ sudo netstat -tap | grep mysql [sudo] password for ...

  10. 【JSP&Servlet学习笔记】4.会话管理

    Http本身是无状态通信协议,要进行会话管理的基本原理,就是将需要维护的状态回应给浏览器,由浏览器在下次请求时主动发送状态信息,让Web应用程序“得知”请求之间的关联. 隐藏字段是将状态信息以窗体中看 ...