zoukankan      html  css  js  c++  java
  • hdu 5510 Bazinga(暴力)

    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 (1≤i≤n) such that there exists an integer j (1≤j<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 (1≤t≤50) which is the number of test cases.
    For each test case, the first line is the positive integer n (1≤n≤500) 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
     

     题意:你需要找到一个最大的i使得,存在一个在他前面的字符串不是他的子串

    直接暴力也能过,这是区域赛吗?

     1 #pragma comment(linker, "/STACK:1024000000,1024000000")
     2 #include<iostream>
     3 #include<cstdio>
     4 #include<cstring>
     5 #include<cmath>
     6 #include<math.h>
     7 #include<algorithm>
     8 #include<queue>
     9 #include<set>
    10 #include<bitset>
    11 #include<map>
    12 #include<vector>
    13 #include<stdlib.h>
    14 #include <stack>
    15 using namespace std;
    16 #define PI acos(-1.0)
    17 #define max(a,b) (a) > (b) ? (a) : (b)
    18 #define min(a,b) (a) < (b) ? (a) : (b)
    19 #define ll long long
    20 #define eps 1e-10
    21 #define MOD 1000000007
    22 #define N 506
    23 #define M 2006
    24 #define inf 1e12
    25 int n;
    26 char s[N][M];
    27 int vis[N];
    28 int main()
    29 {
    30    int t;
    31    int ac=0;
    32    scanf("%d",&t);
    33    while(t--){
    34       memset(vis,0,sizeof(vis));
    35       scanf("%d",&n);
    36       int ans=-1;
    37       for(int i=1;i<=n;i++){
    38          scanf("%s",s[i]);
    39          for(int j=i-1;j>=1;j--){
    40             if(vis[j]) continue;
    41             if(strstr(s[i],s[j])==0) ans=i;
    42             else vis[j]=1;
    43          }
    44       }
    45       
    46       printf("Case #%d: ",++ac);
    47       
    48       if(ans==-1){
    49          printf("-1
    ");
    50       }else{
    51          printf("%d
    ",ans);
    52       }
    53    }
    54     return 0;
    55 }
    View Code
  • 相关阅读:
    Linux 文件管理篇(一 档案读写)
    Linux 任务管理篇(一)
    Mysql 视图简介
    MySql 使用正则表达式查询
    mysql 插入、更新与删除数据
    mysql 多表查询
    mysql 单表查询
    Java抽象类与接口
    maven小结
    shiro 进行权限管理 —— 使用BigInteger进行权限计算获取菜单
  • 原文地址:https://www.cnblogs.com/UniqueColor/p/4982581.html
Copyright © 2011-2022 走看看