线段树单点更新,要注意两段合并多出的答案的计算即可

  1. //============================================================================
  2. // Name : D.cpp
  3. // Author : L_Ecry
  4. // Version :
  5. // Copyright : Your copyright notice
  6. // Description : Hello World in C++, Ansi-style
  7. //============================================================================
  8. #include<cstdio>
  9. #include<cstring>
  10. #include<algorithm>
  11. #include<cmath>
  12. #include <iostream>
  13. #define N 50050
  14. using namespace std;
  15. int value[N*];
  16. char s[N];
  17. inline int cal(int l,int r,int mid)
  18. {
  19.  
  20. int res=;
  21. if(mid>l&&s[mid-]=='w'&&s[mid]=='b'&&s[mid+]=='w')res++;
  22. if(mid+<r&&s[mid]=='w'&&s[mid+]=='b'&&s[mid+]=='w')res++;
  23. return res;
  24. }
  25. void build(int l,int r,int i)
  26. {
  27. if(l==r)
  28. {
  29. value[i]=;
  30. return ;
  31. }
  32. int mid=(l+r)>>;
  33. int lson=(i<<),rson=(i<<|);
  34. build(l,mid,lson);
  35. build(mid+,r,rson);
  36. value[i]=value[lson]+value[rson]+cal(l,r,mid);
  37. }
  38. void update(int l,int r,int p,int i)
  39. {
  40. if(l==r)
  41. {
  42. return;
  43. }
  44. int mid=(l+r)>>;
  45. int lson=(i<<),rson=(i<<|);
  46. if(p<=mid)update(l,mid,p,lson);
  47. else update(mid+,r,p,rson);
  48. value[i]=value[lson]+value[rson]+cal(l,r,mid);
  49. }
  50. int query(int l,int r,int pl,int pr,int i)
  51. {
  52. if(l==pl&&r==pr)
  53. {
  54. return value[i];
  55. }
  56. int mid=(l+r)>>;
  57. if(pr<=mid)return query(l,mid,pl,pr,i<<);
  58. else if(pl>mid)return query(mid+,r,pl,pr,i<<|);
  59. else
  60. {
  61. return query(l,mid,pl,mid,i<<)+query(mid+,r,mid+,pr,i<<|)+cal(pl,pr,mid);
  62. }
  63. }
  64. int n,m;
  65. void init()
  66. {
  67. scanf("%d%d",&n,&m);
  68. scanf(" %s",s+);
  69. build(,n,);
  70. }
  71. void solve()
  72. {
  73. while(m--)
  74. {
  75. int x,y,z;
  76. char c;
  77. scanf("%d%d",&x,&y);
  78. if(x==)
  79. {
  80. scanf("%d",&z);
  81. y++;z++;
  82. printf("%d\n",query(,n,y,z,));
  83. }
  84. else
  85. {
  86. scanf(" %c",&c);
  87. y++;
  88. s[y]=c;
  89. update(,n,y,);
  90. }
  91. }
  92. }
  93. int main() {
  94. int tt,ri=;
  95. scanf("%d",&tt);
  96. while(tt--)
  97. {
  98. init();
  99. printf("Case %d:\n",++ri);
  100. solve();
  101. }
  102. return ;
  103. }

HDU 4046 Panda的更多相关文章

  1. HDU 4046 Panda (ACM ICPC 2011北京赛区网络赛)

    HDU 4046 Panda (ACM ICPC 2011北京赛区网络赛) Panda Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: ...

  2. hdu 4046 Panda 树状数组

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4046 When I wrote down this letter, you may have been ...

  3. HdU 4046 Panda 段树

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=4046 意甲冠军:到了bw组成的长度为n的字符串(n<=50000).有m次操作(m<=1000 ...

  4. hdu 4046 Panda [线段树]

    Panda Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  5. HDU—4046 Panda (线段树)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=4046   题意:给出一个字符串,统计这个字符串任意区间中"wbw"出现的次数. 规定两 ...

  6. HDU 4046 Panda(树状数组)

    Panda Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  7. hdu 4046 2011北京赛区网络赛G 线段树 ***

    还带这么做的,卧槽,15分钟就被A了的题,居然没搞出来 若某位是1,则前两个为wb,这位就是w #include<cstdio> #include<cstring> #defi ...

  8. hdu 4046 树状数组

    #include<stdio.h> #include<string.h> #define N  51000 char s[N]; int a[N],n; int number( ...

  9. HDU 6007 Mr. Panda and Crystal (背包+spfa)

    题意:你生活在一个魔法大陆上,你有n 魔力, 这个大陆上有m 种魔法水晶,还有n 种合成水晶的方式,每种水晶价格告诉你,并且告诉你哪些水晶你能直接造出来,哪些你必须合成才能造出来,问你n魔力最多能卖多 ...

随机推荐

  1. Codeforces708C Centroids 【树形dp】

    题目链接 题意:给定一棵n个结点的树,问:对于每个结点,能否通过删除一条边并添加一条边使得仍是树,并且删除该结点后得到的各个连通分量结点数 <= n/2? 题解:树形dp,两遍dfs,第一遍df ...

  2. 利用ajax.dll类库文件实现无刷新

    使用这种方法前需要配置相应的环境 1.引用ajax.dll文件 2.在web.config添加如下: <httpHandlers>   <add path="ajax/*. ...

  3. (转)Thread.setDaemon设置说明

    本想搜下python多线程里的setDaemon,发现了这篇文章写得很不错:http://blog.csdn.net/m13666368773/article/details/7245570 Thre ...

  4. git123

    一:安装git和配置 1.下载 Git for windows,双击开始安装,一路采取默认选项,一路next,即可安装完毕.为了在你的电脑和github之间建立安全连接,需要SSH keys,所以你需 ...

  5. Spring 定时任务的配置

    1.applicationContext.xml 中 加入task 的声明与xsd ? 1 xmlns:task="http://www.springframework.org/schema ...

  6. HTML5地理位置概述和地理位置对象的详解

    一.地理位置 经度  :   南北极的连接线 纬度  :   东西连接的线   二.位置信息从何而来 IP地址 GPS全球定位系统 Wi-Fi无线网络 基站         三.地理位置对象(navi ...

  7. (转)ConcurrentHashMap解析

    原文地址:http://www.ibm.com/developerworks/cn/java/java-lo-concurrenthashmap/ ConcurrentHashMap 的结构分析 为了 ...

  8. 可视化工具之 IGV 使用方法

    整合基因组浏览器(IGV)是一种高性能的可视化工具,用来交互式地探索大型综合基因组数据.它支持各种数据类型,包括array-based的和下一代测序的数据和基因注释. IGV这个工具很牛,发了NB: ...

  9. java final

    final:(最终的)看不懂时有必要分析内存画图,不同方法的局部变量是相互独立的额不要被所起的名所困扰. 1)每个方法运行时jvm,都会为其开辟一片内存空间.内存空间是属于这个方法的, 同时,方法中的 ...

  10. 关于as中的事件与回调函数

    对于Observer模式, 在as中object(被观察者)既可以用事件(event),也可以用回调函数(caller)来通知观察者(observer).那在实际的开发中到底应该选择用event还是用 ...