zoukankan      html  css  js  c++  java
  • 2015ACM/ICPC亚洲区沈阳站 B-Bazinga

    Bazinga

    Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
    Total Submission(s): 3509    Accepted Submission(s): 1122


    Problem Description
    Ladies and gentlemen, please sit up straight.
    Don't tilt your head. I'm serious.

    For n given strings S1,S2,,Sn , labelled from 1 to n , you should find the largest i (1in) such that there exists an integer j (1j<i) and Sj is not a substring of Si .

    A substring of a string Si is another string that occurs in Si . For example, ``ruiz" is a substring of ``ruizhang", and ``rzhang" is not a substring of ``ruizhang".
     
    Input
    The first line contains an integer t (1t50) which is the number of test cases.
    For each test case, the first line is the positive integer n (1n500) and in the following n lines list are the strings S1,S2,,Sn .
    All strings are given in lower-case letters and strings are no longer than 2000 letters.
     
    Output
    For each test case, output the largest label you get. If it does not exist, output 1 .
     
    Sample Input
    4 5 ab abc zabc abcd zabcd 4 you lovinyou aboutlovinyou allaboutlovinyou 5 de def abcd abcde abcdef 3 a ba ccc
     
    Sample Output
    Case #1: 4 Case #2: -1 Case #3: 4 Case #4: 3
     
    Source
     
    Recommend
    wange2014   |   We have carefully selected several similar problems for you:  5960 5959 5958 5957 5956 
     
    /*
    用两个指针模拟kmp,暴力
    */
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    #include<queue>
    #include<stack>
    #include<math.h>
    #include<vector>
    #include<map>
    #include<set>
    #include<stdlib.h>
    #include<cmath>
    #include<string>
    #include<algorithm>
    #include<iostream>
    #define N 505
    using namespace std;
    ///4294967295
    int t,n;
    int ne[2005];
    void getnext(char *s2)
    {
        int i=0,j=-1,l=strlen(s2);
        ne[0]=-1;
        while(i<l)
        {
            if(j==-1||s2[i]==s2[j])
            {
                i++;j++;
                if(s2[i]==s2[j])
                    ne[i]=ne[j];
                else
                    ne[i]=j;
            }
            else
                j=ne[j];
        }
    }
    int kmp(char *s,char *s2)
    {
        memset(ne,0,sizeof(ne));
        getnext(s2);
        int i=0,j=0,k=0,len=strlen(s),l=strlen(s2);
        while(i<len)
        {
            if(j==-1||s[i]==s2[j])
                i++,j++;
            else
                j=ne[j];
            if(j==l)
                k++,j=ne[j];
        }
        return k;
    }
    char s[N][2005]={"000"};
    bool vis[N],f;
    int main()
    {
        //freopen("C:\Users\acer\Desktop\in.txt","r",stdin);
        scanf("%d",&t);
        int Case=1;
        while(t--)
        {
            memset(vis,true,sizeof vis);
            scanf("%d",&n);
            for(int i=1;i<=n;i++)
                scanf("%s",s[i]);
            printf("Case #%d: ",Case++);
            for(int i=2;i<=n;i++)
                if(kmp(s[i],s[i-1])>0)
                    vis[i-1]=false;
            int f=0;
            for(int i=n;i>=1&&!f;i--)
                for(int j=1;j<i&&!f;j++)
                    if(vis[j])
                    if(kmp(s[i],s[j])==0)
                    {
                        printf("%d
    ",i);
                        f=true;
                    }
            if(!f)
               puts("-1");
        }
        return 0;
    }
  • 相关阅读:
    VysorPro助手
    Play 2D games on Pixel running Android Nougat (N7.1.2) with Daydream View VR headset
    Play 2D games on Nexus 6P running Android N7.1.1 with Daydream View VR headset
    Native SBS for Android
    ADB和Fastboot最新版的谷歌官方下载链接
    How do I install Daydream on my phone?
    Daydream Controller手柄数据的解析
    蓝牙BLE传输性能及延迟分析
    VR(虚拟现实)开发资源汇总
    Android(Java)控制GPIO的方法及耗时分析
  • 原文地址:https://www.cnblogs.com/wuwangchuxin0924/p/6025438.html
Copyright © 2011-2022 走看看