HDU 5510 Bazinga (KMP)
来源:互联网 发布:如何收藏淘宝店铺 编辑:程序博客网 时间:2024/05/18 04:36
题意:
找到最大的i(1≤i≤n),存在一个整数j(1≤j<i),使得串sj不是si的子串,若不存在,输出“-1”
思路:
数据量 500 * 2000
AC自动机 ×
只能暴力匹配,但要剪枝
对于大量存在前后覆盖的串的数据,我们可以通过合并可覆盖的串减小数据范围。
例:
ab
abc
zabc
abcd
zabcd
合并后为:
zabc
zabcd
再从原串中以递减序和合并后的串逐个匹配。
对于不存在大量前后覆盖的串的数据,我们只能按照递减序直接暴力匹配。
由于数据水的缘故,常数小的暴力匹配也可以AC。
代码:
#include <bits/stdc++.h>using namespace std;int T,n;char str[505][2005];int p[2005],cnt;int solve(){ for(int i=n;i>=1;i--){ for(int j=cnt;j>=1;j--){ if(i>=p[j]&&strstr(str[i],str[p[j]])==NULL) return i; } } return -1;}int main(){ scanf("%d",&T); for(int Case=1;Case<=T;Case++){ scanf("%d",&n); getchar(); for(int i=1;i<=n;i++) gets(str[i]); cnt=1; for(int i=1;i<=n;i++){ if(strstr(str[i],str[i-1])!=NULL){ p[cnt]=i; }else{ p[++cnt]=i; } } printf("Case #%d: %d\n",Case,solve()); }}
阅读全文
0 0
- HDU 5510 Bazinga (KMP)
- HDU 5510 Bazinga(KMP)
- HDU-5510 Bazinga(KMP)
- HDU 5510 Bazinga (KMP)
- hdu 5510 -Bazinga(kmp)
- hdu 5510 Bazinga(kmp)
- HDU 5510 Bazinga 【kmp】
- HDU 5510 Bazinga(KMP)
- HDU 5510 Bazinga(kmp)
- Hdu 5510 Bazinga(KMP+尺取法)
- HDU 5510 Bazinga (kmp + 小剪枝)
- hdu 5510Bazinga(kmp+思维)
- hdu 5510 Bazinga(KMP+剪枝)
- HDU 5510(ACM 2015 沈阳)Bazinga [KMP]
- HDU 5510 Bazinga (2015沈阳站B题&&KMP)
- HDU 5510 Bazinga(KMP||strstr神器+些许优化)
- HDU-5510-Bazinga【2015沈阳赛区】【KMP】
- hdu 5510 Bazinga【KMP+暴力剪枝】
- 直接经验
- Orange Pi官方旗舰店的开发板整理备用
- redis 教程
- ENG Note 1 : 英语写作模板
- android 开发框架
- HDU 5510 Bazinga (KMP)
- LeetCode@Tree_100_Max_Depth_B_Tree
- 在Manifest中注册ContentProvider的写法和含义
- 【C语言】模拟实现链表
- 在安卓上部署服务器--ksweb+wordpress
- JS命名空间(namespace)
- 数据类型转换
- jQuery和后端的JSON数据交互
- python写入csv文件中文乱码问题解决办法