hdu_4046_Panda(树状数组)
题目连接: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(树状数组)的更多相关文章
- BZOJ 1103: [POI2007]大都市meg [DFS序 树状数组]
1103: [POI2007]大都市meg Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 2221 Solved: 1179[Submit][Sta ...
- bzoj1878--离线+树状数组
这题在线做很麻烦,所以我们选择离线. 首先预处理出数组next[i]表示i这个位置的颜色下一次出现的位置. 然后对与每种颜色第一次出现的位置x,将a[x]++. 将每个询问按左端点排序,再从左往右扫, ...
- codeforces 597C C. Subsequences(dp+树状数组)
题目链接: C. Subsequences time limit per test 1 second memory limit per test 256 megabytes input standar ...
- BZOJ 2434: [Noi2011]阿狸的打字机 [AC自动机 Fail树 树状数组 DFS序]
2434: [Noi2011]阿狸的打字机 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 2545 Solved: 1419[Submit][Sta ...
- BZOJ 3529: [Sdoi2014]数表 [莫比乌斯反演 树状数组]
3529: [Sdoi2014]数表 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1399 Solved: 694[Submit][Status] ...
- BZOJ 3289: Mato的文件管理[莫队算法 树状数组]
3289: Mato的文件管理 Time Limit: 40 Sec Memory Limit: 128 MBSubmit: 2399 Solved: 988[Submit][Status][Di ...
- 【Codeforces163E】e-Government AC自动机fail树 + DFS序 + 树状数组
E. e-Government time limit per test:1 second memory limit per test:256 megabytes input:standard inpu ...
- 【BZOJ-3881】Divljak AC自动机fail树 + 树链剖分+ 树状数组 + DFS序
3881: [Coci2015]Divljak Time Limit: 20 Sec Memory Limit: 768 MBSubmit: 508 Solved: 158[Submit][Sta ...
- 树形DP+DFS序+树状数组 HDOJ 5293 Tree chain problem(树链问题)
题目链接 题意: 有n个点的一棵树.其中树上有m条已知的链,每条链有一个权值.从中选出任意个不相交的链使得链的权值和最大. 思路: 树形DP.设dp[i]表示i的子树下的最优权值和,sum[i]表示不 ...
随机推荐
- 4. printf 命令
1. printf 命令的语法 printf format-string [arguments...] 参数说明: format-string: 为格式控制字符串 arguments: 为参数列表. ...
- laravel 日志
laravel学院的 http://laravelacademy.org/post/195.html 他人博客的 http://www.cnblogs.com/yjf512/p/4173261.htm ...
- mongo数据库备份与恢复
备份:mongodump -h xx --port 27017 -u user -p pass -d database -o D:\backup\database 恢复:mongorestore -h ...
- Entitlements (授权机制) 延伸
授权机制 (Entitlements) 到目前为止,我们都假设所有的证书起到的作用都是一样的,并且假设如果我们有了一个有效的证书代码签名也就相应的有效.然而这当然不是唯一的规则.操作系统有许多标准来检 ...
- Asp.Net MVC2.0 Url 路由入门---实例篇
本篇主要讲述Routing组件的作用,以及举几个实例来学习Asp.Net MVC2.0 Url路由技术. 接着上一篇开始讲,我们在Global.asax中注册一条路由后,我们的请求是怎么转到相应的Vi ...
- 微信小程序入门——Mustache语法学习
微信小程序中用到了大量Mustache语法,特发此文学习一下 1.简单的变量调换:{{name}} 1 var data = { "name": "Willy" ...
- 《Windows编程循序渐进》——MFC封装机制详解
单文档
- SLF4J 教程
转自:SLF4J 教程 一.介绍:简单日记门面(simple logging Facade for java)SLF4J是为各种loging APIs提供一个简单统一的接口,从而使得最终用户能够在部署 ...
- CSS3秘笈复习:第十一章
1.text-align与vertical-align: text-align控制水平方向的定位,关键字是left.right.center和justify. vertical-align控制垂直方向 ...
- Animate.css让添加CSS动画像喝水一样容易
在这个年代,你要是不懂一点点css3的知识,你都不好意思说你是个美工.美你妹啊,请叫我前端工程师好不好.呃..好吧,攻城尸...呵呵,作为一个攻城尸,没有点高端大气上档次的东西怎么能行呢,那么css3 ...