HDU 4046 Panda
线段树单点更新,要注意两段合并多出的答案的计算即可
- //============================================================================
- // Name : D.cpp
- // Author : L_Ecry
- // Version :
- // Copyright : Your copyright notice
- // Description : Hello World in C++, Ansi-style
- //============================================================================
- #include<cstdio>
- #include<cstring>
- #include<algorithm>
- #include<cmath>
- #include <iostream>
- #define N 50050
- using namespace std;
- int value[N*];
- char s[N];
- inline int cal(int l,int r,int mid)
- {
- int res=;
- if(mid>l&&s[mid-]=='w'&&s[mid]=='b'&&s[mid+]=='w')res++;
- if(mid+<r&&s[mid]=='w'&&s[mid+]=='b'&&s[mid+]=='w')res++;
- return res;
- }
- void build(int l,int r,int i)
- {
- if(l==r)
- {
- value[i]=;
- return ;
- }
- int mid=(l+r)>>;
- int lson=(i<<),rson=(i<<|);
- build(l,mid,lson);
- build(mid+,r,rson);
- value[i]=value[lson]+value[rson]+cal(l,r,mid);
- }
- void update(int l,int r,int p,int i)
- {
- if(l==r)
- {
- return;
- }
- int mid=(l+r)>>;
- int lson=(i<<),rson=(i<<|);
- if(p<=mid)update(l,mid,p,lson);
- else update(mid+,r,p,rson);
- value[i]=value[lson]+value[rson]+cal(l,r,mid);
- }
- int query(int l,int r,int pl,int pr,int i)
- {
- if(l==pl&&r==pr)
- {
- return value[i];
- }
- int mid=(l+r)>>;
- if(pr<=mid)return query(l,mid,pl,pr,i<<);
- else if(pl>mid)return query(mid+,r,pl,pr,i<<|);
- else
- {
- return query(l,mid,pl,mid,i<<)+query(mid+,r,mid+,pr,i<<|)+cal(pl,pr,mid);
- }
- }
- int n,m;
- void init()
- {
- scanf("%d%d",&n,&m);
- scanf(" %s",s+);
- build(,n,);
- }
- void solve()
- {
- while(m--)
- {
- int x,y,z;
- char c;
- scanf("%d%d",&x,&y);
- if(x==)
- {
- scanf("%d",&z);
- y++;z++;
- printf("%d\n",query(,n,y,z,));
- }
- else
- {
- scanf(" %c",&c);
- y++;
- s[y]=c;
- update(,n,y,);
- }
- }
- }
- int main() {
- int tt,ri=;
- scanf("%d",&tt);
- while(tt--)
- {
- init();
- printf("Case %d:\n",++ri);
- solve();
- }
- return ;
- }
HDU 4046 Panda的更多相关文章
- HDU 4046 Panda (ACM ICPC 2011北京赛区网络赛)
HDU 4046 Panda (ACM ICPC 2011北京赛区网络赛) Panda Time Limit: 10000/4000 MS (Java/Others) Memory Limit: ...
- hdu 4046 Panda 树状数组
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4046 When I wrote down this letter, you may have been ...
- HdU 4046 Panda 段树
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4046 意甲冠军:到了bw组成的长度为n的字符串(n<=50000).有m次操作(m<=1000 ...
- hdu 4046 Panda [线段树]
Panda Time Limit: 10000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Subm ...
- HDU—4046 Panda (线段树)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=4046 题意:给出一个字符串,统计这个字符串任意区间中"wbw"出现的次数. 规定两 ...
- HDU 4046 Panda(树状数组)
Panda Time Limit: 10000/4000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- hdu 4046 2011北京赛区网络赛G 线段树 ***
还带这么做的,卧槽,15分钟就被A了的题,居然没搞出来 若某位是1,则前两个为wb,这位就是w #include<cstdio> #include<cstring> #defi ...
- hdu 4046 树状数组
#include<stdio.h> #include<string.h> #define N 51000 char s[N]; int a[N],n; int number( ...
- HDU 6007 Mr. Panda and Crystal (背包+spfa)
题意:你生活在一个魔法大陆上,你有n 魔力, 这个大陆上有m 种魔法水晶,还有n 种合成水晶的方式,每种水晶价格告诉你,并且告诉你哪些水晶你能直接造出来,哪些你必须合成才能造出来,问你n魔力最多能卖多 ...
随机推荐
- Codeforces708C Centroids 【树形dp】
题目链接 题意:给定一棵n个结点的树,问:对于每个结点,能否通过删除一条边并添加一条边使得仍是树,并且删除该结点后得到的各个连通分量结点数 <= n/2? 题解:树形dp,两遍dfs,第一遍df ...
- 利用ajax.dll类库文件实现无刷新
使用这种方法前需要配置相应的环境 1.引用ajax.dll文件 2.在web.config添加如下: <httpHandlers> <add path="ajax/*. ...
- (转)Thread.setDaemon设置说明
本想搜下python多线程里的setDaemon,发现了这篇文章写得很不错:http://blog.csdn.net/m13666368773/article/details/7245570 Thre ...
- git123
一:安装git和配置 1.下载 Git for windows,双击开始安装,一路采取默认选项,一路next,即可安装完毕.为了在你的电脑和github之间建立安全连接,需要SSH keys,所以你需 ...
- Spring 定时任务的配置
1.applicationContext.xml 中 加入task 的声明与xsd ? 1 xmlns:task="http://www.springframework.org/schema ...
- HTML5地理位置概述和地理位置对象的详解
一.地理位置 经度 : 南北极的连接线 纬度 : 东西连接的线 二.位置信息从何而来 IP地址 GPS全球定位系统 Wi-Fi无线网络 基站 三.地理位置对象(navi ...
- (转)ConcurrentHashMap解析
原文地址:http://www.ibm.com/developerworks/cn/java/java-lo-concurrenthashmap/ ConcurrentHashMap 的结构分析 为了 ...
- 可视化工具之 IGV 使用方法
整合基因组浏览器(IGV)是一种高性能的可视化工具,用来交互式地探索大型综合基因组数据.它支持各种数据类型,包括array-based的和下一代测序的数据和基因注释. IGV这个工具很牛,发了NB: ...
- java final
final:(最终的)看不懂时有必要分析内存画图,不同方法的局部变量是相互独立的额不要被所起的名所困扰. 1)每个方法运行时jvm,都会为其开辟一片内存空间.内存空间是属于这个方法的, 同时,方法中的 ...
- 关于as中的事件与回调函数
对于Observer模式, 在as中object(被观察者)既可以用事件(event),也可以用回调函数(caller)来通知观察者(observer).那在实际的开发中到底应该选择用event还是用 ...