zoukankan      html  css  js  c++  java
  • HDU

    题意:给定A,B长度相同的字符串,Q次操作,修改操作位单个字符修改,查询操作为询问从某点开始有多少连续相同的字符。

    思路:我们把不相同的设为1,相同的设为0,那么询问就是找下一个为1的为位置,可以用线段树解决,可以用set的lower_bound解决,这里用bitset的Find_next函数,效率还可以。 关键是代码短,好写。

    复杂度:相当于分块,块的大小为32,所以复杂度为O(L/32),L取决于下一个1的位置; 可以看讨论:http://codeforces.com/blog/entry/43718

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=1000010;
    bitset<maxn>s;
    char a[maxn],b[maxn];
    int main()
    {
        int T,N,Q,C=0,opt;
        scanf("%d",&T);
        while(T--){
            scanf("%s%s",a+1,b+1); N=strlen(a+1);
             s.reset();
             for(int i=1;i<=N;i++) if(a[i]!=b[i]) s[i]=1; s[N+1]=1;
             scanf("%d",&Q);
             printf("Case %d:
    ",++C);
            while(Q--){
                scanf("%d",&opt);
                if(opt==1){
                    int w,pos; char c[3];
                    scanf("%d%d%s",&w,&pos,c);
                    if(w==1) a[pos+1]=c[0];
                    else b[pos+1]=c[0];
                    if(a[pos+1]!=b[pos+1]) s[pos+1]=1;
                    else s[pos+1]=0;
                }
                else {
                    int pos; scanf("%d",&pos);
                    int first=s._Find_next(pos);
                    printf("%d
    ",first-pos-1);
                }
            }
        }
        return 0;
    }
  • 相关阅读:
    自动部署基于Maven的war文件到远程Tomcat
    解决Eclipse中新创建的Maven项目不自动创建web.xml文件
    JFreeChart
    hibernate
    hibernate
    hibernate
    hibernate
    Hibernate
    hibernate关联关系映射详解
    Hibernate获取数据java.lang.StackOverflowError
  • 原文地址:https://www.cnblogs.com/hua-dong/p/9913862.html
Copyright © 2011-2022 走看看