zoukankan      html  css  js  c++  java
  • BZOJ 3942: [Usaco2015 Feb]Censoring

    Description

    有两个字符串,每次用一个中取出下一位,放在一个字符串中,如果当前字符串的后缀是另一个字符串就删除.

    Sol

    KMP+栈.

    用一个栈来维护新加的字符串就可以了..

    一开始我非常的naive,写了个链表,只能过5个点,因为起始位置不太好搞...

    Code

    /**************************************************************
        Problem: 3942
        User: BeiYu
        Language: C++
        Result: Accepted
        Time:336 ms
        Memory:12032 kb
    ****************************************************************/
     
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    using namespace std;
      
    const int N = 1000005;
    #define debug(a) cout<<#a<<"="<<a<<" "
      
    char s[N],t[N];
    int n,m,top;
    int f[N],tp[N];
    char stk[N];
      
    int main(){
        scanf("%s",s+1);scanf("%s",t+1);
        n=strlen(s+1),m=strlen(t+1);
        for(int i=2,j=0;i<=m;i++){
            while(j && t[i]!=t[j+1]) j=f[j];
            if(t[i]==t[j+1]) ++j;
            f[i]=j;
        }
        for(int i=1,j=0;i<=n;i++){
            j=tp[top],stk[++top]=s[i];
            while(j && stk[top]!=t[j+1]) j=f[j];
            if(stk[top]==t[j+1]) ++j;
            tp[top]=j;
            if(j==m) top-=m;
        }
        stk[top+1]='';puts(stk+1);
        return 0;
    }
    

      

  • 相关阅读:
    数据库设计
    构建评价
    Schema xds文献
    架构设计评价
    需求分析评价
    获取script的链接参数并执行
    js获取封装对象/通过id tag className
    通过css/js来固定div的位置
    nginx日志分析工具goaccesss
    如何快速安装 allure
  • 原文地址:https://www.cnblogs.com/beiyuoi/p/6013966.html
Copyright © 2011-2022 走看看