博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu_4046_Panda(树状数组)
阅读量:5366 次
发布时间:2019-06-15

本文共 1848 字,大约阅读时间需要 6 分钟。

题目连接: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
const int maxn=50001;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=0;for(;x;x-=x&-x)an+=tree[x];return an;}void change(int x,char y){ int cg[3],after[3]; for(int i=0;i<=2;i++){ if(x+i-2<1)cg[i]=0; else if(a[x+i-2]=='w'&&a[x+i-1]=='b'&&a[x+i]=='w')cg[i]=1; else cg[i]=0; } a[x]=y; for(int i=0;i<=2;i++){ if(x+i-2<1)after[i]=0; else if(a[x+i-2]=='w'&&a[x+i-1]=='b'&&a[x+i]=='w')after[i]=1; else after[i]=0; } for(int i=0;i<=2;i++){ int kk=after[i]-cg[i]; if(kk!=0)add(x+i,kk); }}int main(){ //fre(); int t,ic=1,m,cmd; scanf("%d",&t); while(t--){ printf("Case %d:\n",ic++); scanf("%d%d",&n,&m); scanf("%s",a+1); for(int i=1;i<=n;i++)tree[i]=0; for(int i=3;i<=n;i++)if(a[i]=='w'&&a[i-1]=='b'&&a[i-2]=='w')add(i,1); for(int i=1;i<=m;i++){ scanf("%d",&cmd); if(cmd==0){ int x,y; scanf("%d%d",&x,&y); x++,y++; if(y-x<2){printf("0\n");continue;} if(y-x==2){
if(a[x]=='w'&&a[x+1]=='b'&&a[x+2]=='w')printf("1\n");else printf("0\n");} else printf("%d\n",ask(y)-ask(x+1)); }else{ int x; char y[2]; scanf("%d%s",&x,y); x++; if(a[x]==y[0])continue; else change(x,y[0]); } } } return 0;}
View Code

 

转载于:https://www.cnblogs.com/bin-gege/p/5696185.html

你可能感兴趣的文章
typing-python用于类型注解的库
查看>>
20189215 2018-2019-2 《密码与安全新技术专题》第13周作业
查看>>
第四周作业
查看>>
一、HTML基础
查看>>
蓝牙进阶之路 (002) - HC-05与HC-06的AT指令的区别(转)
查看>>
mysql的limit经典用法及优化
查看>>
C#后台程序与HTML页面中JS方法互调
查看>>
mysql 同一个表中 字段a 的值赋值到字段b
查看>>
linux系统可执行文件添加环境变量使其跨终端和目录执行
查看>>
antiSMASH数据库:微生物次生代谢物合成基因组簇查询和预测
查看>>
UNICODE与ANSI的区别
查看>>
nginx 配置实例
查看>>
Flutter - 创建底部导航栏
查看>>
ASP.NET MVC 教程-MVC简介
查看>>
SQL Server索引 - 聚集索引、非聚集索引、非聚集唯一索引 <第八篇>
查看>>
转载:详解SAP TPM解决方案在快速消费品行业中的应用
查看>>
Android OpenGL ES 开发(N): OpenGL ES 2.0 机型兼容问题整理
查看>>
项目中用到的技术及工具汇总(持续更新)
查看>>
【算法】各种排序算法测试代码
查看>>
HDU 5776 Sum
查看>>