摘要:
这道题好坑啊,整整调了我一下午!! 题意很简单,就是一个裸的自动机加上解码。编码是使用8位ASCII码连接字符,然后6位一取,结尾不足6位用0补上,每6位二进制数都会对应一个字符,形成了新的字符串。解码后最好用int存每一位的内容,写起来比较方便,因为可能会有'\0'这样的字符出现。。 一开始写了个位运算版本的解码,但是一直WA。于是写了个很暴力的模拟二进制解码,竟然A了,看来自动机部分没什么问题。然后又回过头来调我的位运算版解码,怎么算都没有错啊,但是就是一直WAWAWA。。。。最后绝望之中改了下数组大小,把字符串数组从2500改成了5000。。。然后,然后就神奇的A了。。跑 阅读全文
posted @ 2012-08-05 19:42
Burn_E
阅读(463)
评论(0)
推荐(0)
摘要:
AC自动机的模版题,应该是很多人的AC自动机处女作吧。。 在斌牛的讲解下,总算是对AC自动机了解了个大概,这里采用了AC自动机和Trie图两种写法,据说后者在AC自动机DP中用的比较多,应该很快就会做到了。。。两者差不多,Trie图利用失败指针来建图,据说AC自动机到Trie图就是转化成了确定性有穷自动机。 贴一下两种写法的代码,当模版了。 AC自动机:#include <string.h>#include <stdio.h>#include <queue>#define MAXS 500010int cas,n;char s[55],find[100000 阅读全文
posted @ 2012-08-05 00:11
Burn_E
阅读(190)
评论(0)
推荐(0)
摘要:
感觉是不太好想的一道题,看完之后能想到是KMP,按照自己的想法敲了出来,但一直过不了。后来在网上搜题解搜到了一篇国家集训队的论文《由图论问题浅析算法优化》,论文中提到了这道题,想法很巧妙,类似于枚举,再加上KMP的优化。因为S较小(1~25),只要枚举模式串中的数字和匹配串中的数字的对应关系并且满足大小顺序关系就可以确定下来这个子串是否符合要求,具体的过程可以去看一下论文,这个算法的本质还是枚举,只是在枚举中进行了优化,并且使用KMP优化来快速找到符合对应关系的子串的位置,我的程序在POJ上跑了一秒多点,应该可以再优化。 但是上面的算法还是有缺点的,其复杂度是O(S*S*(N+M)),当... 阅读全文
posted @ 2012-08-05 00:00
Burn_E
阅读(913)
评论(0)
推荐(0)