HDU 3336 kmp
来源:互联网 发布:李明 沈超 linux 视频 编辑:程序博客网 时间:2024/05/16 08:16
2014/9/11
我是渣比,看了一些题解,有的说是考虑在 s 的所有子串中前缀共出现了多少次。哈哈哈过的代码完全不是找那样写的至少我看不懂题目和代码
// 失败者用失败诉说真实,成功者用成功掩饰事实。//阳光刺痛双眸// #include<stdio.h>#include<string.h>#include<cmath> #include<algorithm>#include<iostream>#include<queue>#include<stack>#include<map>#include<climits>#include<vector>using namespace std;typedef long long ll; #define f(x,y,i) for(int i = x;i < y; i++)#define ff(x,y,i) for(int i = x;i <= y; i++)#define F(x,y,i) for(int i = x; i >= y; i--)#define FF(x,y,i) for(int i = x; i > y; i++)#define lson pos<<1,l,mid#define rson pos<<1|1,mid+1,r#define Min(x,y) x<y?x:y#define Max(x,y) x>y?x:y#define sc(n) scanf("%d",&n)#define pr(n) printf("%d\n",n)#define met(n,m) memset(n, m, sizeof(n)) #define mod 10007const int N=205000;int n, m , len,tot;char s[N];int next[N];int num[N];int cnt ;void Next(){int p = 0;for(int i = 2; i<= n; ++i){while(p > 0&&s[p+1] != s[i])p = next[p];if(s[p+1] == s[i])++p;next[i] = p;}}void WaKing(){met(num,0);cnt = 0;for(int i = n; i; --i){++num[i];num[next[i]]=(num[i] + num[next[i]])%mod;cnt=(cnt+num[i])%mod;}printf("%d\n",cnt);}int main(){int cnt = 0; while(~scanf("%d",&tot)) { while(tot--) { scanf("%d",&n); scanf("%s",s+1); Next(); WaKing(); } } return 0;}
0 0
- 【KMP】HDU 3336
- HDU 3336 KMP+DP
- hdu 3336 kmp
- hdu 3336(KMP)
- kmp hdu 3336
- HDU 3336 kmp
- hdu 3336 KMP+DP
- hdu 3336 kmp
- HDU 3336 KMP
- HDU 3336 (KMP)
- hdu 3336 Kmp+dp
- HDU 3336 kmp的应用
- HDU 3336 数据结构之KMP
- hdu 3336 Count the string KMP
- KMP Hdu-3336 Count the string
- HDU 3336 Count the string(KMP 理解)
- HDU 3336 Count the string KMP
- HDU 3336 Count the string(KMP+dp)
- 全排列的六种算法
- Java事务(一) - 概述
- 关于子类化
- window8 64位 + Oracle 12c 64位下使用PL/SQL Developer 的解决办法
- iOS 加载图片选择imageNamed 方法还是 imageWithContentsOfFile?
- HDU 3336 kmp
- [SC-08]开源夏令营项目期末总结
- LeetCode OJ - Same Tree
- 豆美人— 一篇散文,与君共赏
- 如何通过ping识别操作系统
- 暴风影音怎么旋转视频?暴风影音旋转视频方法
- 使用solrj操作solr索引库
- jdbc连接myslq和sql两种数据库代码
- VS2008的项目出现错误“找不到windows.h”的解决办法