树状数组,主要是抓住要求连续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的更多相关文章

  1. HDU 5045 Contest(状压DP)

    Problem Description In the ACM International Collegiate Programming Contest, each team consist of th ...

  2. hdu - 5045 - Contest(国家压缩dp)

    意甲冠军:N个人M通过主打歌有自己的期望,每个问题发送人玩.它不能超过随机播放的次数1,追求最大业绩预期 (1 ≤ N ≤ 10,1 ≤ M ≤ 1000). 主题链接:pid=5045" ...

  3. [ACM] hdu 5045 Contest (减少国家Dp)

    Contest Problem Description In the ACM International Collegiate Programming Contest, each team consi ...

  4. hdu 4339 Query(两种思路求解)

    Query Time Limit: 20000/10000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total Su ...

  5. HDU–5988-Coding Contest(最小费用最大流变形)

    Coding Contest Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)To ...

  6. hdu 5045 Contest(状态压缩DP)

    题解:我们使用一个二位数组dp[i][j]记录进行到第i个任务时,人组合为j时的最大和(这里的j我们用二进制的每位相应一个人). 详细见代码: #include <iostream> #i ...

  7. HDU 5045 Contest

    pid=5045">主题链接~~> 做题感悟:比赛时这题后来才写的,有点小尴尬.两个人商议着写写了非常久才写出来,I want to Powerful ,I believe me ...

  8. HDU - 4339: Query(bitset暴力找下一个为1的)

    题意:给定A,B长度相同的字符串,Q次操作,修改操作位单个字符修改,查询操作为询问从某点开始有多少连续相同的字符. 思路:我们把不相同的设为1,相同的设为0,那么询问就是找下一个为1的为位置,可以用线 ...

  9. HDU 4335 Contest 4

    利用降幂公式..呃,还是自己去搜题解吧.知道降幂公式后,就不难了. #include <iostream> #include <cstdio> #include <alg ...

随机推荐

  1. jboss final 7.1.1相关error以及解决方式

    问题1 报错提示: MSC00001: Failed to start service jboss.web.deployment.default-host./: Caused by: java.lan ...

  2. java 抽象类和接口的差别

     语法层面上: 1)抽象类能够提供成员方法的实现细节.而接口中仅仅能存在public abstract 方法. 2)抽象类中的成员变量能够是各种类型的.而接口中的成员变量仅仅能是public st ...

  3. ios Button

    展现效果例如以下: 功能说明: 1加入来图片背景, 2动态展现百度网页, 3动态加入button. 4展现提示框.展现你点击提示框得index  我成功来你也快来试试. 1 详细得项目创建与拖动but ...

  4. JavaSE 最easy出错的几个简单的问题

    案例1. package cn.itcast.oop; public class ThisDemo { public static void main(String[] args) { Student ...

  5. 并行编程(1) - sum.msic.Unsafe 一

    相信看过java源代码的同学.对 sum.msic.Unsafe 这个类并不陌生,特别是在java.util.concurrent包有非常多的使用. sum.msic.Unsafe源代码:      ...

  6. zzulioj--1637--Happy Thanksgiving Day - WoW yjj!(水)

    1637: Happy Thanksgiving Day - WoW yjj! Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 104  Solved: ...

  7. Pycharm使用入门

    Python安装与Pycharm使用入门 一.安装Python 1.Linux下安装 一般系统默认已安装2.6.6版本,升级成2.7版本, 但 2.6 不能删除,因为系统对它有依赖,epel源里最新的 ...

  8. js如何计算浮点数

    js中浮点型是如何运算的呢? 例如:var a=0.69; 我想得到6.9 直接这样写 var c=a*10; alert(c);   得到结果是:6.8999999999999995 到网上一搜,有 ...

  9. 38.Qt模型/视图结构

    1.模型/视图类 2.模型 3.视图 4.代理 1 模型/视图类 InterView框架提供了一些可以直接使用的模型类和视图类,如QStandardModel类,QDirModel类,QStringL ...

  10. roscore不能启动

    通过VNC 在VNC窗口上出入 roscore  得到下面错误信息 ----------------------------------------------------------- proces ...