上一页 1 2 3 4 5 6 7 8 ··· 19 下一页

2013年9月27日

HDU3695 - Computer Virus on Planet Pandora(AC自动机)

摘要: 题目大意 给定一个文本串T,然后给定n个模式串,问有多少个模式串在文本串中出现,正反都可以 题解 建立好自动机后。把文本串T正反各匹配一次,刚开始一直TLE。。。后面找到原因是重复的子串很多以及有模式串是另外一个模式串的子串这种情况也很多~~~,所以我们用数组标记一下就好了~~~改了交上去之后是WA,最后发现时visit数组初始化错地方了。。。。 代码: #include #include #in... 阅读全文

posted @ 2013-09-27 14:53 仗剑奔走天涯 阅读(332) 评论(0) 推荐(0) 编辑

2013年9月26日

测试

摘要: \(\alpha+\beta\geq\frac12\) 阅读全文

posted @ 2013-09-26 22:14 仗剑奔走天涯 阅读(95) 评论(0) 推荐(0) 编辑

ZOJ3228 - Searching the String(AC自动机)

摘要: 题目大意 给定一个文本串,接下来有n个模式串,每次查询模式串出现的次数,查询分两种,可重叠和不可重叠 题解 第一次是把AC自动机构造好,跑n次,统计出每个模式串出现的次数,交上去果断TLE。。。后来想想其实只要跑一次文本串即可。。。 这个题目主要的问题是要解决有可重叠和不可重叠两种情况,用一个数组记录下模式串上一次出现的位置就可以判断是否重叠了 代码: #include #include #inc... 阅读全文

posted @ 2013-09-26 22:06 仗剑奔走天涯 阅读(183) 评论(0) 推荐(0) 编辑

2013年9月23日

HDU2222 - Keywords Search(AC自动机)

摘要: 题目大意 给定n个字符串和一个文本串T,问你有多少个字符串在文本串中出现 题解 AC自动机裸题。。。唯一要注意的是字符串有重复。。。 代码: #include #include #include #include #include #include using namespace std;const int maxnode=500005;const int sigma_size=26;int an... 阅读全文

posted @ 2013-09-23 20:39 仗剑奔走天涯 阅读(207) 评论(0) 推荐(0) 编辑

UVa1449 - Dominating Patterns(AC自动机)

摘要: 题目大意 给定n个由小写字母组成的字符串和一个文本串T,你的任务是找出那些字符串在文本中出现的次数最多 题解 一个文本串,多个模式串,这刚好是AC自动机处理的问题 代码: #include #include #include #include #include #include #include using namespace std;const int maxnode=11111;const i... 阅读全文

posted @ 2013-09-23 20:35 仗剑奔走天涯 阅读(211) 评论(0) 推荐(0) 编辑

AC自动机模板

摘要: struct AhoCorasickAutomata { int ch[maxnode][sigma_size],last[maxnode]; int fail[maxnode],val[maxnode]; int sz; void init() { memset(ch[0],0,sizeof(ch[0])); sz=1; } int idx(char c){return c-'a';} void insert(char *s,int v) { int u=0,n=strlen(s); ... 阅读全文

posted @ 2013-09-23 19:47 仗剑奔走天涯 阅读(201) 评论(0) 推荐(0) 编辑

2013 ACM/ICPC Asia Regional Changsha Online–C (模拟)

摘要: 题目描述 略。。。 题解 注意控制精度即可。。。。变量全部定义成double,结果round就行。。。。妈蛋。。。。被这题目恶心死了。。。。 代码: #include #include #include #include #include #include using namespace std;#define ESP 1e-15double sl,sv,v,l,r,g,b,h;void HSV... 阅读全文

posted @ 2013-09-23 11:24 仗剑奔走天涯 阅读(906) 评论(0) 推荐(1) 编辑

2013年9月20日

Codeforces126B - Password(KMP)

摘要: 题目大意给定一个字符串S,要求你找到一个最长的子串,它既是S的前缀,也是S的后缀,并且在S的内部也出现过(非端点)题解KMP的失配函数f[i]的非零值就是前i个字符的一个最长前缀且也是后缀的字符串的末尾位置,倒过来求每一个f[i],并且判断是否在S的内部是否出现即可代码:#include #include #include #include using namespace std;#define MAXN 1000005char T[MAXN],s[MAXN];int f[MAXN];void getfail(char *p,int len){ int j; f[0]=j=-1; ... 阅读全文

posted @ 2013-09-20 22:33 仗剑奔走天涯 阅读(252) 评论(0) 推荐(0) 编辑

Codeforces182D - Common Divisors(KMP)

摘要: 题目大意 如果把字符串a重复m次可以得到字符串b,那么我们称字符串a为字符串b的一个因子,现在给定两个字符串S1和S2,求它们的公共因子个数 题解 如果它们有公共因子,那么显然它们的最小公共因子肯定是相等的~~~,公因子就是字符串的最短循环节~~~所以我们先把两个最短循环节给求出来,并判断是否相同,如果相同的话就是它们的最小公因子,然后所有的最小公因子的倍数并且是S1和S2的公约数都是它们的公因子... 阅读全文

posted @ 2013-09-20 22:01 仗剑奔走天涯 阅读(575) 评论(0) 推荐(0) 编辑

Codeforces149E - Martian Strings(KMP)

摘要: 题目大意 给定一个字符串T,接下来有n个字符串,对于每个字符串S,判断是否存在T[a…b]+T[c…d]=S(1 ≤ a ≤ b #include #include #include using namespace std;#define MAXN 1005char p[MAXN],T[MAXN*100];int f[MAXN],pos[MAXN],ans;void getfail(){ i... 阅读全文

posted @ 2013-09-20 21:41 仗剑奔走天涯 阅读(598) 评论(0) 推荐(0) 编辑

2013年9月17日

POJ3080 - Blue Jeans(KMP+二分)

摘要: 题目大意 求N个字符串的最长公共字串 题解 和POJ1226做法一样。。。注意是字典序最小的。。。WA了一次 代码: #include #include #include #include using namespace std;#define MAXN 65char p[MAXN],T[MAXN][MAXN];int f[MAXN];void getfail(char *p,int len){... 阅读全文

posted @ 2013-09-17 16:58 仗剑奔走天涯 阅读(185) 评论(0) 推荐(0) 编辑

POJ2752 - Seek the Name, Seek the Fame(KMP)

摘要: 题目大意 给定一个字符串S,求出所有既是S的前缀又是S的后缀的子串长度 题解 从末尾位置倒推,经过的失配函数值就是题目要求求的 代码: #include #include #include #include #include using namespace std;#define MAXN 400005int f[MAXN];char p[MAXN];int main(){ int j; ... 阅读全文

posted @ 2013-09-17 16:08 仗剑奔走天涯 阅读(179) 评论(0) 推荐(0) 编辑

HDU4745 - Two Rabbits(区间DP)

摘要: 题目大意给出一个长度为n的环状序列,两只兔子各自从一个点出发,一个顺时针跳,一个逆时针跳,每个时刻都要求两只兔子所在的数字是相同的,兔子最多跳一个圈~~~问兔子们最多能跳多少次题解一个逆时针跳,一个顺时针跳,经过的数字刚好组成了一个回文串,所以题目的要求就是求最长的回文,不过序列是环状的!怎么办?我... 阅读全文

posted @ 2013-09-17 15:04 仗剑奔走天涯 阅读(1027) 评论(2) 推荐(0) 编辑

2013年9月16日

HDU4737 - A Bit Fun(线段树)

摘要: 题目大意 给你一个数组a,定义f(i,j)=ai|ai+1|ai+2|⋯|aj ,|为or运算,求满足f(i,j)#include#include#include#includeusing namespace std;#define MAXN 100005#define lson l,m,s>1; build(lson); build(rson); PushUp(s);}int ... 阅读全文

posted @ 2013-09-16 20:21 仗剑奔走天涯 阅读(197) 评论(0) 推荐(0) 编辑

POJ1226 - Substrings(KMP+二分)

摘要: 题目大意给定n个字符串,字符串可逆序可顺序,求它们的最长公共子串题解在输入的过程中记录一下最短的那个字符串,然后枚举起点,然后进行二分求出子串末位置,然后再验证是否是公共子串,记录最长的公共子串就是最终答案~~~~时间复杂度为O(N^3*logn)代码:#include #include #include #include using namespace std;#define MAXN 105#define INF 0x3f3f3f3fchar T[MAXN][MAXN];int f[MAXN];void getfail(char *p,int len){ int j; f[0... 阅读全文

posted @ 2013-09-16 16:16 仗剑奔走天涯 阅读(289) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 7 8 ··· 19 下一页

导航