HDU 4339 Contest 4
树状数组,主要是抓住要求连续1的个数。这样,初始时,相同的加1,不同的加0.
查询时,用二分搜索右边界。就是比较当前mid-l+1的值与他们之间1的个数(这可以通过树状数组求区间和得出),记录右边界即可。
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <string.h>
#define lowbit(x) ((x)&(-(x))) using namespace std;
const int N= 1000015; char str1[N],str2[N];
int ptree[N]; int sum(int *a,int x){
if(x==0) return 0;
int s=0;
for(;x;x-=lowbit(x))s+=a[x];
return s;
} void update(int *a,int x,int w,int &n){
for(;x<=n;x+=lowbit(x))a[x]+=w;
} int ans[100005]; int binSearch(int l,int r){
int p=l-1,tmp;
int spre=sum(ptree,p);
int ans=l;
while(l<=r){
int mid=(l+r)/2;
tmp=sum(ptree,mid);
if(tmp-spre<mid-p)
r=mid-1;
else{
ans=mid;
l=mid+1;
}
}
return ans-p;
} int main(){
int T,Q,kase=0;
int ch,a,ii; char c;
scanf("%d",&T);
while(T--){
cin>>str1+1;
cin>>str2+1;
int len=min(strlen(str1+1),strlen(str2+1));
memset(ptree,0,sizeof(int)*(len+5));
for(int i=1;i<=len;i++){
if(str1[i]==str2[i])
update(ptree,i,1,len);
}
scanf("%d",&Q);
printf("Case %d:\n",++kase);
for(int i=1;i<=Q;i++){
cin>>ch;
if(ch==2){
cin>>a;
if(str1[a+1]!=str2[a+1]){
printf("%d\n",0);
}
else{
printf("%d\n",binSearch(a+1,len));
}
}
else{
cin>>a>>ii>>c;
// cout<<a<<ii<<c<<endl;
if(ii+1>len) continue;
if(a==1){
if(str1[ii+1]==str2[ii+1]){
str1[ii+1]=c;
if(str1[ii+1]==str2[ii+1])
continue;
else
update(ptree,ii+1,-1,len);
}
else{
str1[ii+1]=c;
if(str1[ii+1]==str2[ii+1])
update(ptree,ii+1,1,len);
}
}
else{
if(str1[ii+1]==str2[ii+1]){
str2[ii+1]=c;
if(str1[ii+1]==str2[ii+1])
continue;
else
update(ptree,ii+1,-1,len);
}
else{
str2[ii+1]=c;
if(str1[ii+1]==str2[ii+1])
update(ptree,ii+1,1,len);
}
}
}
}
}
return 0;
}
HDU 4339 Contest 4的更多相关文章
- HDU 5045 Contest(状压DP)
Problem Description In the ACM International Collegiate Programming Contest, each team consist of th ...
- hdu - 5045 - Contest(国家压缩dp)
意甲冠军:N个人M通过主打歌有自己的期望,每个问题发送人玩.它不能超过随机播放的次数1,追求最大业绩预期 (1 ≤ N ≤ 10,1 ≤ M ≤ 1000). 主题链接:pid=5045" ...
- [ACM] hdu 5045 Contest (减少国家Dp)
Contest Problem Description In the ACM International Collegiate Programming Contest, each team consi ...
- hdu 4339 Query(两种思路求解)
Query Time Limit: 20000/10000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total Su ...
- HDU–5988-Coding Contest(最小费用最大流变形)
Coding Contest Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- hdu 5045 Contest(状态压缩DP)
题解:我们使用一个二位数组dp[i][j]记录进行到第i个任务时,人组合为j时的最大和(这里的j我们用二进制的每位相应一个人). 详细见代码: #include <iostream> #i ...
- HDU 5045 Contest
pid=5045">主题链接~~> 做题感悟:比赛时这题后来才写的,有点小尴尬.两个人商议着写写了非常久才写出来,I want to Powerful ,I believe me ...
- HDU - 4339: Query(bitset暴力找下一个为1的)
题意:给定A,B长度相同的字符串,Q次操作,修改操作位单个字符修改,查询操作为询问从某点开始有多少连续相同的字符. 思路:我们把不相同的设为1,相同的设为0,那么询问就是找下一个为1的为位置,可以用线 ...
- HDU 4335 Contest 4
利用降幂公式..呃,还是自己去搜题解吧.知道降幂公式后,就不难了. #include <iostream> #include <cstdio> #include <alg ...
随机推荐
- HDU 1575 EASY
#include <iostream> #include <cstdio> #include <cstring> #include <algorithm> ...
- osEye.Net:离别是为了将来的重逢
这一时刻已经成为osEye历史..... 在热心网友的关怀和鼓励之下,osEye.net将继续运行着,感谢你们陪伴osEye一起走过.... 与你相知相恋已经有4个年头了,你的成长到成熟都让我历历在目 ...
- 从头认识java-13.5 利用泛型构建复杂模型
这一章节我们来展示一下如何利用泛型构建复杂模型? 1.元组列表 我们之前已经说过元组是一个复杂的模型,能够返回多对象. package com.ray.ch11; import java.util.A ...
- Chisel Tutorial(一)——Chisel介绍
Chisel是由伯克利大学公布的一种开源硬件构建语言,建立在Scala语言之上,是Scala特定领域语言的一个应用,具有高度參数化的生成器(highly parameterized generator ...
- Inside ARC — to see the code inserted by the compiler
前言 这是我在我们技术团队所做的一次分享,稍作改动放到博客上来. 我们技术团队会不定期(一般一个月1~2次)做技术分享,对我们团队有兴趣的能够私信我. 下面是正文. 这里的主题是"Insid ...
- SSD纠错码向LDPC码演变
作者:Stephen Bates SSD控制器芯片中採用的纠错编码(ECCs)的类型正在发生一场演变.相信很多这篇博文的读者对此都有所了解.传统上採用的纠错码是基于群变换的博斯-查德胡里-霍昆格母(B ...
- hdu(2846)Repository
Problem Description When you go shopping, you can search in repository for avalible merchandises by ...
- vi 调到第一行,或最后一行
用vi命令打开文件直接跳到最后一行的方法如下: :$ 跳到文件最后一行 :0或:1 跳到文件第一行 或 另外一组命令: gg 跳到文件第一行 Shift + g 跳到文件最后一行
- C/C++ 工具函数 —— 大端模式和小端模式的互换
小端模式:小在小,大在大:大端模式:小在大,大在小: uint32_t swap_endian(uint32_t val) { val = ((val << 8) & 0xFF00 ...
- java.lang.ClassNotFoundException: org.objectweb.asm.ClassWriter
转自:https://www.cnblogs.com/yfceshi/p/6814802.html Caused by: javax.xml.ws.WebServiceException: java. ...