• bzoj 3620: 似乎在梦中见过的样子


    暴力处理每一个左端点,然后就和NOI2014动物园是差不多(几乎是一样的)

    (一开始还以为是什么KMP的奇怪姿势)

     1 #include<bits/stdc++.h>
     2 #define N 1000005
     3 #define LL long long
     4 #define inf 0x3f3f3f3f
     5 using namespace std;
     6 inline int ra()
     7 {
     8     int x=0,f=1; char ch=getchar();
     9     while (ch<'0' || ch>'9') {if (ch=='-') f=-1; ch=getchar();}
    10     while (ch>='0' && ch<='9') {x=x*10+ch-'0'; ch=getchar();}
    11     return x*f;
    12 }
    13 int k,n,fail[N],ans;
    14 char ch[N];
    15 int main()
    16 {
    17     scanf("%s",ch+1); k=ra();
    18     n=strlen(ch+1);
    19     for (int i=1; i<=n-k*2; i++)
    20     {
    21         int fix=i-1; fail[i]=i-1;
    22         for (int j=i+1; j<=n; j++)
    23         {
    24             while (ch[fix+1]!=ch[j] && fix>i-1) fix=fail[fix]; 
    25             if (ch[fix+1]==ch[j]) fix++; fail[j]=fix;
    26         }
    27         for (int j=i+k*2; j<=n; j++)
    28         {
    29             int pos=j;
    30             while ((fail[pos]-i+1)*2>=j-i+1)
    31                 pos=fail[pos];
    32             if (fail[pos]-i+1>=k) ans++;
    33         }
    34     }
    35     cout<<ans;
    36     return 0;
    37 }
  • 相关阅读:
    linux时间格式化
    mysql5.7 安装版安装
    mac下面安装多个JDK
    linux一台机器文件传到另一台机器上
    取模运算
    【UVALive 7334】Kernel Knights
    【HDU 2604】Queuing
    【CodeForces 577B】Modulo Sum
    【CodeForces 504A】Misha and Forest
    【HDU 2203】亲和串
  • 原文地址:https://www.cnblogs.com/ccd2333/p/6440200.html
Copyright © 2020-2023  润新知