http://www.lydsy.com/JudgeOnline/problem.php?id=1103

题意:一棵n节点的树(1<=n<=250000),m条边(1<=m<=250000-1),权值为1,有n+m-1个操作:操作W u:询问u到根的权值和; 操作A u v,将边(u, v)的权值减去1

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int N=250005;
  5. int n, ihead[N], cnt;
  6. struct dat { int next, to; }e[N<<1];
  7. void add(int u, int v) {
  8. e[++cnt].next=ihead[u]; ihead[u]=cnt; e[cnt].to=v;
  9. e[++cnt].next=ihead[v]; ihead[v]=cnt; e[cnt].to=u;
  10. }
  11. int dep[N], tot, FF[N], LL[N];
  12. void dfs(int x, int fa) {
  13. FF[x]=++tot;
  14. for(int i=ihead[x]; i; i=e[i].next) if(e[i].to!=fa) dep[e[i].to]=dep[x]+1, dfs(e[i].to, x);
  15. LL[x]=tot;
  16. }
  17. int c[N];
  18. void upd(int x, int s) { for(; x<=n; x+=x&-x) c[x]+=s; }
  19. int sum(int x) { int ret=0; for(; x; x-=x&-x) ret+=c[x]; return ret; }
  20. int main() {
  21. scanf("%d", &n);
  22. for(int i=0; i<n-1; ++i) { int u, v; scanf("%d%d", &u, &v); add(u, v); }
  23. dfs(1, 0);
  24. int m; scanf("%d", &m);
  25. for(int k=0; k<m+n-1; ++k) {
  26. int u, v;
  27. char s[2];
  28. scanf("%s%d", s, &u);
  29. if(s[0]=='W') {
  30. printf("%d\n", sum(FF[u])+dep[u]);
  31. }
  32. else {
  33. scanf("%d", &v);
  34. if(dep[u]<dep[v]) swap(u, v);
  35. upd(FF[u], -1);
  36. upd(LL[u]+1, 1);
  37. }
  38. }
  39. return 0;
  40. }

  


做过dfs序的应该都会吧...

很显然,每次更改一条边,影响了深度大一点的节点的所有子树,询问就是询问1-当前点的权值和就行了

所以我们维护一下dfs序和前缀和即可

【BZOJ】1103: [POI2007]大都市meg的更多相关文章

  1. BZOJ 1103: [POI2007]大都市meg [DFS序 树状数组]

    1103: [POI2007]大都市meg Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2221  Solved: 1179[Submit][Sta ...

  2. BZOJ 1103: [POI2007]大都市meg

    1103: [POI2007]大都市meg Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2189  Solved: 1160[Submit][Sta ...

  3. 数据结构(线段树):BZOJ 1103 [POI2007]大都市meg

    1103: [POI2007]大都市meg Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 1791  Solved: 925[Submit][Stat ...

  4. BZOJ 1103: [POI2007]大都市meg( 树链剖分 )

    早上数学考挂了...欲哭无泪啊下午去写半个小时政治然后就又可以来刷题了.. 树链剖分 , 为什么跑得这么慢... ------------------------------------------- ...

  5. Hdu 3887 Counting Offspring \ Poj 3321 Apple Tree \BZOJ 1103 [POI2007]大都市meg

    这几个题练习DFS序的一些应用. 问题引入: 给定一颗n(n <= 10^5)个节点的有根树,每个节点标有权值,现有如下两种操作: 1.C x y     以节点x的权值修改为y. 2.Q x ...

  6. BZOJ 1103 [POI2007]大都市meg(树状数组+dfs序)

    [题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1103 [题目大意] 给出一棵树,每条边的经过代价为1,现在告诉你有些路不需要代价了, ...

  7. bzoj 1103 : [POI2007]大都市meg (树链剖分+线段树)

    Description 在经济全球化浪潮的影响下,习惯于漫步在清晨的乡间小路的邮递员Blue Mary也开始骑着摩托车传递邮件了.不过,她经常回忆起以前在乡间漫步的情景.昔日,乡下有依次编号为1..n ...

  8. BZOJ 1103: [POI2007]大都市meg(dfs序,树状数组)

    本来还想链剖的,结果才发现能直接树状数组的= = 记录遍历到达点与退出点的时间,然后一开始每个到达时间+1,退出时间-1,置为公路就-1,+1,询问直接点1到该点到达时间求和就行了- - CODE: ...

  9. bzoj 1103: [POI2007]大都市meg (dfs序)

    dfs序,加个bit维护前缀和就行了 type arr=record toward,next:longint; end; const maxn=; var edge:..maxn]of arr; bi ...

  10. bzoj 1103: [POI2007]大都市meg【dfs序+树状数组】

    很明显的暗示,就是在树的dfs序上维护树状数组,加减的时候差分即可 #include<iostream> #include<cstdio> #include<cstrin ...

随机推荐

  1. HDOJ 2544

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  2. Linux_DHCP服务搭建

    Linux网络参数的设置 1.        修改主机名 # vim /etc/sysconfig/network NETWORKING=yes HOSTNAME=bj.com 2.        修 ...

  3. 回调函数callback

    你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货.在这个例子里,你的电话号码就叫回调函数,你把电话留给 ...

  4. C++纯虚函数

    本文较为深入的分析了C++中虚函数与纯虚函数的用法,对于学习和掌握面向对象程序设计来说是至关重要的.具体内容如下: 首先,面向对象程序设计(object-oriented programming)的核 ...

  5. RadioButtonList单选和RequiredFieldValidator验证是否选中

    <asp:RadioButtonList ID="Radio2" RepeatDirection="Horizontal" runat="ser ...

  6. 【leetcode】Best Time to Buy and Sell Stock III

    Best Time to Buy and Sell Stock III Say you have an array for which the ith element is the price of ...

  7. kvm虚似机监控

    [root@ok Desktop]# yum install virt-top [root@ok Desktop]# virt-top virt-top 22:53:44 - x86_64 4/4CP ...

  8. Maven使用笔记(二)Eclipse中maven项目添加依赖

    1.在Eclipse中创建Eclipse项目后如何添加jar包? 点击pom.xml文件.我们可以看到下面有7个标签. 各个标签的含义如下: Overview:显示maven项目的一些基本信息Depe ...

  9. SVN服务器搭建和使用(三)(转载)

    转载地址:http://www.cnblogs.com/xiaobaihome/archive/2012/03/20/2408089.html 接下来,试试用TortoiseSVN修改文件,添加文件, ...

  10. FileHelper-文件操作辅助类

    using System; using System.Collections.Generic; using System.IO; using System.Text; namespace Whir.S ...