hdu 4046 树状数组
#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 树状数组的更多相关文章
- hdu 4638 树状数组 区间内连续区间的个数(尽可能长)
Group Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Subm ...
- hdu 4777 树状数组+合数分解
Rabbit Kingdom Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) T ...
- HDU 2852 (树状数组+无序第K小)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2852 题目大意:操作①:往盒子里放一个数.操作②:从盒子里扔掉一个数.操作③:查询盒子里大于a的第K小 ...
- HDU 4911 (树状数组+逆序数)
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4911 题目大意:最多可以交换K次,就最小逆序对数 解题思路: 逆序数定理,当逆序对数大于0时,若ak ...
- hdu 5792(树状数组,容斥) World is Exploding
hdu 5792 要找的无非就是一个上升的仅有两个的序列和一个下降的仅有两个的序列,按照容斥的思想,肯定就是所有的上升的乘以所有的下降的,然后再减去重复的情况. 先用树状数组求出lx[i](在第 i ...
- HDU 1934 树状数组 也可以用线段树
http://acm.hdu.edu.cn/showproblem.php?pid=1394 或者是我自己挂的专题http://acm.hust.edu.cn/vjudge/contest/view. ...
- 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 ...
- 【模板】HDU 1541 树状数组
http://acm.hdu.edu.cn/showproblem.php?pid=1541 题意:给你一堆点,每个点右一个level,为其右下方所有点的数量之和,求各个level包含的点数. 题解: ...
- hdu 5147 树状数组
题意:求满足a<b<c<d,A[a]<A[b],A[c]<A[d]的所有四元组(a,b,c,d)的个数 看到逆序对顺序对之类的问题一开始想到了曾经用归并排序求逆序对,结果 ...
随机推荐
- spring web中的filter
昨天看了会spring web中部分代码,主要是各种filter,回顾一下: Spring的web包中中有很多过滤器,这些过滤器位于org.springframework.web.filter并且理所 ...
- bzoj 3944 Sum —— 杜教筛
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=3944 杜教筛入门题! 看博客:https://www.cnblogs.com/zjp-sha ...
- 用回调函数创建一个XMLHttpRequest,并从一个TXT文件中检索数据。
<script> var xmlhttp; function loadXMLDoc(url,soyo) { if (window.XMLHttpRequest) {// IE7+, Fir ...
- 04、抽取BaseActivity
// 在使用SDK各组件之前初始化context信息,传入ApplicationContext // 注意该方法要再setContentView方法之前实现 // SDKInitializer.ini ...
- Rails 服务器架设失败问题
更新: 2017/09/14 补充了简单的确认号码的方法 A server is already running. Check /Users/...../pids/server.pid. Exitin ...
- 洛谷P1726 上白泽慧音(Tarjan强连通分量)
P1726 上白泽慧音 题目描述 在幻想乡,上白泽慧音是以知识渊博闻名的老师.春雪异变导致人间之里的很多道路都被大雪堵塞,使有的学生不能顺利地到达慧音所在的村庄.因此慧音决定换一个能够聚集最多人数的村 ...
- 各地图API坐标系统比较
各地图API坐标系统比较 简单记录一下各家坐标系 WGS84坐标系:即地球坐标系,国际上通用的坐标系.设备一般包含GPS芯片或者北斗芯片获取的经纬度为WGS84地理坐标系,谷歌地图采用的是WGS84地 ...
- 吝啬的国度 ---用vector 来构图
根据题目可以看出来 有n 个城市 只有 n-1 条路线 那么 就可以确定这个图中 不存在 圆 所以从一个点到另一个点 只有一条唯一的路 所以从一个节点到另一个节点 那么 这个节点只有一个唯 ...
- Tomcat发布项目,域名访问
域名访问项目 1,去掉访问路径的端口号: 找到 Tomcat 下的 conf 文件中的 server.xml,找到 8080 修改成 80, 2,项目绑定域名: <Host name=" ...
- MySQL关于存储过程
代码示例: 1.IN输入参数: delimiter // create PROCEDURE proc1(IN sid int) begin select * from student where id ...