题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=4046

题意:一大堆篇幅介绍,跳过直奔主题,让你寻找给定区间的“wbw”的个数。

题解:直接上树状数组,改变字符后对应改变3个值就行,注意的是询问 [l,r],应该对应输出的是[l+1,r]。因为sum[l+1]记录了a[l-1],a[l],a[l+1]。

#include<cstdio>
const int maxn=;
int tree[maxn],n;
char a[maxn];
void fre(){freopen("c:\\acm\\input.txt","r",stdin);}
inline void add(int x,int v){for(;x<=n;x+=x&-x)tree[x]+=v;}
inline int ask(int x){int an=;for(;x;x-=x&-x)an+=tree[x];return an;}
void change(int x,char y){
int cg[],after[];
for(int i=;i<=;i++){
if(x+i-<)cg[i]=;
else if(a[x+i-]=='w'&&a[x+i-]=='b'&&a[x+i]=='w')cg[i]=;
else cg[i]=;
}
a[x]=y;
for(int i=;i<=;i++){
if(x+i-<)after[i]=;
else if(a[x+i-]=='w'&&a[x+i-]=='b'&&a[x+i]=='w')after[i]=;
else after[i]=;
}
for(int i=;i<=;i++){
int kk=after[i]-cg[i];
if(kk!=)add(x+i,kk);
}
}
int main(){
//fre();
int t,ic=,m,cmd;
scanf("%d",&t);
while(t--){
printf("Case %d:\n",ic++);
scanf("%d%d",&n,&m);
scanf("%s",a+);
for(int i=;i<=n;i++)tree[i]=;
for(int i=;i<=n;i++)if(a[i]=='w'&&a[i-]=='b'&&a[i-]=='w')add(i,);
for(int i=;i<=m;i++){
scanf("%d",&cmd);
if(cmd==){
int x,y;
scanf("%d%d",&x,&y);
x++,y++;
if(y-x<){printf("0\n");continue;}
if(y-x==){if(a[x]=='w'&&a[x+]=='b'&&a[x+]=='w')printf("1\n");else printf("0\n");}
else printf("%d\n",ask(y)-ask(x+));
}else{
int x;
char y[];
scanf("%d%s",&x,y);
x++;
if(a[x]==y[])continue;
else change(x,y[]);
}
}
}
return ;
}

hdu_4046_Panda(树状数组)的更多相关文章

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

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

  2. bzoj1878--离线+树状数组

    这题在线做很麻烦,所以我们选择离线. 首先预处理出数组next[i]表示i这个位置的颜色下一次出现的位置. 然后对与每种颜色第一次出现的位置x,将a[x]++. 将每个询问按左端点排序,再从左往右扫, ...

  3. codeforces 597C C. Subsequences(dp+树状数组)

    题目链接: C. Subsequences time limit per test 1 second memory limit per test 256 megabytes input standar ...

  4. BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]

    2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec  Memory Limit: 256 MBSubmit: 2545  Solved: 1419[Submit][Sta ...

  5. BZOJ 3529: [Sdoi2014]数表 [莫比乌斯反演 树状数组]

    3529: [Sdoi2014]数表 Time Limit: 10 Sec  Memory Limit: 512 MBSubmit: 1399  Solved: 694[Submit][Status] ...

  6. BZOJ 3289: Mato的文件管理[莫队算法 树状数组]

    3289: Mato的文件管理 Time Limit: 40 Sec  Memory Limit: 128 MBSubmit: 2399  Solved: 988[Submit][Status][Di ...

  7. 【Codeforces163E】e-Government AC自动机fail树 + DFS序 + 树状数组

    E. e-Government time limit per test:1 second memory limit per test:256 megabytes input:standard inpu ...

  8. 【BZOJ-3881】Divljak AC自动机fail树 + 树链剖分+ 树状数组 + DFS序

    3881: [Coci2015]Divljak Time Limit: 20 Sec  Memory Limit: 768 MBSubmit: 508  Solved: 158[Submit][Sta ...

  9. 树形DP+DFS序+树状数组 HDOJ 5293 Tree chain problem(树链问题)

    题目链接 题意: 有n个点的一棵树.其中树上有m条已知的链,每条链有一个权值.从中选出任意个不相交的链使得链的权值和最大. 思路: 树形DP.设dp[i]表示i的子树下的最优权值和,sum[i]表示不 ...

随机推荐

  1. Sql Server尝试读取或写入受保护的内存。这通常指示其他内存已损坏

    今日遇到这样一个问题,用vs2010调试C#代码时,只要代码一运行到跟数据库关联的地方时,编译器就报错误,给的提示如:调试器已附加,要继续需要分离什么的,咋一看还以为是vs中调试器设置的问题,可后来仔 ...

  2. Redis6-sorted set 的介绍

    Sort Set排序集合类型(1)介绍和set一样sorted set也是string类型元素的集合,不同的是每个元素都会关联一个权.通过权值可以有序的获取集合中的元素该Sort Set类型适合场合: ...

  3. servlet之过滤器(转载)

    林炳文Evankaka原创作品.转载请注明出处http://blog.csdn.net/evankaka 一.Filter 1.过滤器的概念 Java中的Filter 并不是一个标准的Servlet ...

  4. liunx下试用yum进行php及opchache扩展安装

    Centos 6.6 环境: php 5.6.29 nginx:1.10.2 1.配置安装包源 # CentOs 6.x rpm -Uvh http://mirror.webtatic.com/yum ...

  5. MVC修改文件上传大小问题

    在web.config文件的system.web节点的httpRuntime节点加入 maxRequestLength="2147483647" executionTimeout= ...

  6. Python编码问题整理【转】

    认识常见编码 GB2312是中国规定的汉字编码,也可以说是简体中文的字符集编码 GBK 是 GB2312的扩展 ,除了兼容GB2312外,它还能显示繁体中文,还有日文的假名 cp936:中文本地系统是 ...

  7. 《JS权威指南学习总结--8.3 函数的实参和形参》

    内容要点: 一.可选形参 当调用函数的时候传入的实参比函数声明时指定的形参个数要少,剩下的形参都将设置为undefined值. 例如: //将对象o中可枚举的属性名追加至数组 //如果省略a,则创建一 ...

  8. soapui工具使用时400 Bad Request

    因为项目中用json格式进行传输数据,多次确认json中的各个属性与接口中的对象属性一致,还是不能正常访问到接口.想起json数据中有中文, 在soapui的左下角将Encoding 的值设为utf- ...

  9. CF 602C The Two Routes(dij+邻接矩阵)

    ( ̄▽ ̄)" #include<iostream> #include<cstdio> #include<cmath> #include<algori ...

  10. Linux中kettle连接hadoop并传数据(5)

    http://wiki.pentaho.com/display/BAD/Loading+Data+into+HDFS 新建job