Longest Prefix最长前缀

dp

直接贴代码了...

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cmath>
 4 #include <algorithm>
 5 #include <cstring>
 6 #include <string>
 7 #include <set>
 8 using namespace std;
 9 set<string>s;
10 string p;
11 int main()
12 {
13     freopen("prefix.in","r",stdin);
14     freopen("prefix.out","w",stdout);
15     s.clear();
16     int maxlen=0;
17     cin>>p;
18     int f[200100]={false};
19     f[0]=true;
20     int ans=0;
21     int len;
22     while(p!=".")
23     {
24         len=p.length();
25         maxlen=max(maxlen,len);
26         s.insert(p);
27         cin>>p;
28     }
29     p="";
30     char c[200100];
31     while(scanf("%s",&c)!=EOF)
32         p=p+string(c);  
33     len=p.length();
34     p=" "+p; 
35     for(int i=1;i<=len;i++)
36         for(int j=i;j>=i-maxlen+1;j--)  
37         {
38             if(j<1)
39                 break;
40             string t=p.substr(j,i-j+1);
41             if(s.count(t))
42             {
43                 f[i]=(f[j-1])||(f[i]);
44                 if((i>ans)&&(f[i]))
45                     ans=i;
46                 if(f[i])
47                     break;
48                 
49             }
50         }
51     printf("%d\n",ans);
52 }

 

 

 

 

zerosum

dfs ..就是字符串比较烦......

Money Systems货币系统

完全背包.....

Controlling Companies 控制公司

我打的很暴力  直接暴力枚举了 ....  差点超时  就是不停更新维护 他们之间互相控制的数组.....