题目连接: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. qtp childObjects用法

    ChildObjects: Returns the collection of child objects contained within the object. F1帮助解释:返回当前调用对象的所 ...

  2. redis7--hash set的操作

    数据类型Hash(1)介绍hash数据类型存储的数据与mysql数据库中存储的一条记录极为相似Redis本身就类似于Hash的存储结构,分为key-value键值对,实际上它的Hash数据就好像是在R ...

  3. 一个例子让你了解Java反射机制

    本文来自:blog.csdn.net/ljphhj JAVA反射机制: 通俗地说,反射机制就是可以把一个类,类的成员(函数,属性),当成一个对象来操作,希望读者能理解,也就是说,类,类的成员,我们在运 ...

  4. 转:Web网站性能测试分析及调优实例

    1.背景 前段时间,性能测试团队经历了一个规模较大的门户网站的性能优化工作,该网站的开发和合作涉及多个组织和部门,而且网站的重要性不言而喻,同时上线时间非常紧迫,关注度也很高,所以对于整个团队的压力也 ...

  5. WPF关于“在“System.Windows.Markup.StaticResourceHolder”上提供值时引发了异常。”问题解决办法

    在WPF中添加样式,在MainWindow.xaml使用自定义按钮FButton时报错,报错信息如下: "System.Windows.Markup.XamlParseException&q ...

  6. Tomcat server.xml UTF-8配置

    Tomcat server.xml UTF-8配置 <Connector port="8080" maxThreads="150" minSpareThr ...

  7. [妙味JS基础]JS热身运动

    知识点总结 获取ID元素 document.getElementById(' ') 事件:鼠标事件.键盘事件.系统事件.表单事件.自定义事件 onclick onmouseout onmouseove ...

  8. 《JS权威指南学习总结--6.6属性getter和setter》

    内容要点: 一.对象属性     对象属性是由名字.值和一组特性构成的.在ES5中,属性值可以用一个或两个方法替代,这两个方法就是getter和setter.由getter和setter定义的属性称做 ...

  9. IOS 类的属性修饰符atomic

    在声明一个类的属性时,默认这个属性会被修饰atomic,意思是原子性访问的. nonatomic和atomic修饰的属性,在自己没有重写setter和getter的时候才会发生作用,其主要的作用可以理 ...

  10. 一个简单的Servlet工具

    以前老师在项目中用过一个Sevlet的工具,就是在请求Servlet的时候带一个参数,该参数决定要执行Servlet中的方法, public class ServletUtils extends Ht ...