#include<stdio.h>

#include<string.h>

#define N  51000

char s[N];

int a[N],n;

int number(int x) {

return x&-x;

}

void creat(int x,int k) {

int i;

for(i=x;i<=50000;i+=number(i))

   a[i]+=k;

}

int sum(int x) {

int su=0,i;

for(i=x;i>=1;i-=number(i))

su+=a[i];

return su;

}

int suma(int a,int b) {

return sum(b)-sum(a);

}

int main() {

      int t,m,i,j,k,count=0;

 char c;

scanf("%d",&t);

while(t--) {

scanf("%d%d",&n,&m);

scanf("%s",s+1);

memset(a,0,sizeof(a));

for(i=3;i<=n;i++)

if(s[i-1]=='b'&&s[i]=='w'&&s[i-2]=='w') 

        creat(i,1);

printf("Case %d:\n",++count);

while(m--) {

scanf("%d",&i);

if(i==0)  {

scanf("%d%d",&j,&k);

j++;k++;

if(j+1>=k)

printf("0\n");

else

printf("%d\n",suma(j+1,k));

}

else {

scanf("%d %c",&j,&c);

j++;

if(s[j]==c)

continue;


if(s[j-1]=='b'&&s[j]=='w'&&s[j-2]=='w')//将没有改变前,如果与这个字符有关系可以变成一个love就要减一

 creat(j,-1);

if(s[j-1]=='w'&&s[j]=='b'&&s[j+1]=='w')

creat(j+1,-1);

if(s[j]=='w'&&s[j+1]=='b'&&s[j+2]=='w')

creat(j+2,-1);

s[j]=c;

if(s[j-1]=='b'&&s[j]=='w'&&s[j-2]=='w')//改变后,如果与这个字符有关系可以变成一个love的话加一

 creat(j,1);

if(s[j-1]=='w'&&s[j]=='b'&&s[j+1]=='w')

creat(j+1,1);

if(s[j]=='w'&&s[j+1]=='b'&&s[j+2]=='w')

creat(j+2,1);

}

}

}





return 0;

}

hdu 4046 树状数组的更多相关文章

  1. hdu 4638 树状数组 区间内连续区间的个数(尽可能长)

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

  2. hdu 4777 树状数组+合数分解

    Rabbit Kingdom Time Limit: 6000/3000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) T ...

  3. HDU 2852 (树状数组+无序第K小)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2852 题目大意:操作①:往盒子里放一个数.操作②:从盒子里扔掉一个数.操作③:查询盒子里大于a的第K小 ...

  4. HDU 4911 (树状数组+逆序数)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4911 题目大意:最多可以交换K次,就最小逆序对数 解题思路: 逆序数定理,当逆序对数大于0时,若ak ...

  5. hdu 5792(树状数组,容斥) World is Exploding

    hdu 5792 要找的无非就是一个上升的仅有两个的序列和一个下降的仅有两个的序列,按照容斥的思想,肯定就是所有的上升的乘以所有的下降的,然后再减去重复的情况. 先用树状数组求出lx[i](在第 i ...

  6. HDU 1934 树状数组 也可以用线段树

    http://acm.hdu.edu.cn/showproblem.php?pid=1394 或者是我自己挂的专题http://acm.hust.edu.cn/vjudge/contest/view. ...

  7. 2018 CCPC网络赛 1010 hdu 6447 ( 树状数组优化dp)

    链接:http://acm.hdu.edu.cn/showproblem.php?pid=6447 思路:很容易推得dp转移公式:dp[i][j] = max(dp[i][j-1],dp[i-1][j ...

  8. 【模板】HDU 1541 树状数组

    http://acm.hdu.edu.cn/showproblem.php?pid=1541 题意:给你一堆点,每个点右一个level,为其右下方所有点的数量之和,求各个level包含的点数. 题解: ...

  9. hdu 5147 树状数组

    题意:求满足a<b<c<d,A[a]<A[b],A[c]<A[d]的所有四元组(a,b,c,d)的个数 看到逆序对顺序对之类的问题一开始想到了曾经用归并排序求逆序对,结果 ...

随机推荐

  1. bzoj 1078 [SCOI2008]斜堆 —— 斜堆

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1078 考察斜堆的性质: 一个点如果没有左子树,也一定没有右子树: 看了这篇精美的博客:htt ...

  2. 面向对象软件工程与UML

    软件工程基本概念 软件危机 软件的功能.规模及复杂性与日俱增,软件的复杂性达到了它的开发者难以控制的程度 这种情况导致了严重的后果: 软件可靠性下降 开发效率低下 维护极为困难 这使软件开发者陷入困境 ...

  3. selenium3 + python - autoit上传文件

    一.环境准备: 1.可以autoit官网上下载,安装 http://www.autoitscript.com/site/ 2.AutoIt里面几个菜单功能介绍: SciTE Script Editor ...

  4. Comet OJ - Contest #3 题解

    传送门 太菜了连\(D\)都做不出来没有小裙子\(QAQ\) \(A\) 暴力把所有的数对都算出来,然后\(sort\)一下就行了 const int N=505; int a[N],st[N*N], ...

  5. MAC应用无法打开或文件损坏的处理方法

    在MAC下安装一些软件时提示"来自身份不明开发者",其实这是MAC新系统启用了新的安全机制.默认只信任 Mac App Store 下载的软件和拥有开发者 ID 签名的应用程序.换 ...

  6. Linux下MySql数据的导入导出

    1,每天4点备份mysql数据: 2,为节省空间,删除超过3个月的所有备份数据: 3,删除超过7天的备份数据,保留3个月里的 10号 20号 30号的备份数据: mysqldump -u用戶名 -p密 ...

  7. jQueryTools-Scrollable.js

    转载一篇例子,学习使用: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http: ...

  8. <assert.h>

    Diagnostics 定义宏: void assert (scalar-expression); 若expression为0,则打印出错信息(类似Assertion failed: expressi ...

  9. 【RTTI】java Class类详解

    RTTI (Run-Time Type Information)运行时类信息 Java的Class类是java反射机制的基础,通过Class类我们可以获得关于一个类的相关信息,下面我们来了解一下有关j ...

  10. html5——web字体

    基本介绍 1.自定义网页特殊字体,无需考虑用户电脑上是否安装了此特殊字体,从此把特殊字体处理成图片的时代便成为了过去. 2.支持程度比较好,甚至IE低版本浏览器也能支持. 3.web字体的大小鉴定是字 ...