

2015ACM-ICPC亚洲区域赛沈阳站 B:Bazinga(KMP+剪枝)
source link: https://arminli.com/acm-shenyang-b/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

2015ACM-ICPC亚洲区域赛沈阳站 B:Bazinga(KMP+剪枝)
March 16, 2016
题意:给定 n 个字符串,标号 1~n,找出标号最大的字符串 i,使 1~i 中存在一个字符串不是 i 的子串。
很容易想到 KMP,如果直接搞会超时,那么可以从头开始遍历主串,记录满足条件的串,最后从后找第一个满足条件的就可以。
每次遍历子串时,如果找到字符串 j 是 i 的子串,就把 j 标记一下,再往后就不需要对 j 进行 KMP。
#include<cstdio> #include<cstring> #include<cmath> #include<iostream> #include<algorithm> #include<vector> #include<map> #include<queue> #include<stack> #include<string> using namespace std; int nextt[505][2005]; char s[505][2005]; int f[505]; //f[i]=1表示i是后面某个串的子串 int ans[505]; //如果字符串i满足题意则ans[i]=1,最后从大到小遍历i即可 void kmp_pre(char x[],int m,int nextt[]){ int i, j; j = nextt[0] = -1; i = 0; while(i < m){ while(-1!=j && x[i]!=x[j]) j = nextt[j]; nextt[++i] = ++j; } } int KMP_Index(char x[], int m, char y[], int n, int k){ int i = 0, j = 0; //kmp_pre(x, m, nextt); while(i < n && j < m){ if(j == -1 || y[i] == x[j]){ i++; j++; } else j = nextt[k][j]; } if(j == m) return i-m; else return -1; } int main(){ //freopen("a.txt", "r", stdin); int t; cin >> t; for(int cas = 1; cas <= t; cas++){ memset(f, 0, sizeof(f)); memset(ans, 0, sizeof(ans)); int n; scanf("%d", &n); //求next for(int i = 0; i < n; i++){ scanf("%s", s[i]); kmp_pre(s[i], strlen(s[i]), nextt[i]); } int flag = 0; for(int i = 1; i < n; i++){ for(int j = 0; j < i; j++){ if(!f[j]){ int k = KMP_Index(s[j], strlen(s[j]), s[i], strlen(s[i]), j); if(k!=-1) f[j] = 1; else{ flag = 1; } } } if(flag){ ans[i] = 1; flag = 0; } } for(int i = n-1; i >= 0; i--){ if(ans[i]){ printf("Case #%d: %d\n", cas, ++i); break; } if(i==0) printf("Case #%d: -1\n", cas); } } return 0; }
Recommend
-
53
刚刚,reddit 上出现了一篇关于论文《Rethinking the Value of Network Pruning》的讨论,该论文的观点似乎与近期神经网络剪枝方面论文的结论相矛盾。这非常令人惊讶,它甚至会改变我们对神经网络的固有观点,即神经网络的过参数...
-
46
最近,快手 Y-Tech 西雅图 AI lab 联合罗切斯特大学等研究者提出了一种基于能耗建模的压缩方法,他们一脉相承的两篇论文分别被 ICLR 2019 和 CVPR 2019 接收。在这篇文章中,我们将介绍这种新型模型压缩的核心思想及主要做法,神经网络压...
-
6
2015ACM-ICPC亚洲区域赛沈阳站 F:Frogs(容斥)March 11, 2016题目链接 题意: m 个石头标记 0~m-1,然后 n 个青蛙开始都在石头 0 上,每个青蛙每次跳 x 块石头,求最后...
-
7
Armin's Blog2015ACM-ICPC亚洲区域赛沈阳站 D:PagodasMarch 09, 2016题目链接 题意:N 个点,刚开始给出两个点 a,b(a != b) ,有...
-
9
Armin's Blog2015ACM-ICPC亚洲区域赛EC-Final L:Multiplication Table(数学)February 27, 2016题目 PDF 下载 题意:给...
-
10
Armin's Blog2015ACM-ICPC亚洲区域赛EC-Final A:Boxes and BallsFebruary 26, 2016题目 PDF 下载 题意:f(m) = m*(m+1)/...
-
10
Armin's Blog2015ACM-ICPC亚洲区域赛EC-Final D:ChangeFebruary 27, 2016题目 PDF 下载 题意:A, B ∈ {0.01, 0.02, 0.05...
-
6
Armin's Blog2015ACM-ICPC亚洲区域赛EC-Final M:November 11thFebruary 26, 2016题目 PDF 下载 题意:R*S 的电影院座位...
-
2
Armin's Blog2015ACM-ICPC亚洲区域赛EC-Final F:Hungry Game of Ants(DP)March 01, 2016题目 PDF 下载 题意:n 只蚂蚁...
-
8
2015ACM-ICPC亚洲区域赛EC-Final B:Business Cycle(二分)February 29, 2016题目 PDF 下载 题意:n 是一圈内的数字(a1,a2,,,an)个数,p 步数的上限,问初...
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK