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;
    }
    

      

  • 相关阅读:
    模式识别 之 BP算法
    仪器开发 之 DICOM 三维重建 HPP
    模式识别 之 BP算法 (二)
    病理分析 之 细胞分析
    脉搏血氧仪 之 算法原理
    模式识别 之 初学
    机器学习 之 模糊神经(失败总结)
    冲刺第二天
    冲刺第三天
    团队项目计划
  • 原文地址:https://www.cnblogs.com/beiyuoi/p/6013966.html
Copyright © 2011-2022 走看看