上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 25 下一页
摘要: ORZ主席,这可持久化数据结构真是碉堡了!~PS:这两个题的读入是不同的。。。View Code 1 #include <iostream> 2 #include <cstdlib> 3 #include <cstdio> 4 #include <cstring> 5 #include <algorithm> 6 7 #define N 100010 8 9 using namespace std;10 11 int h[N<<5],ls[N<<5],rs[N<<5],sum[N<<5] 阅读全文
posted @ 2013-02-18 23:10 proverbs 阅读(612) 评论(5) 推荐(0) 编辑
摘要: 首先简要介绍一下AC自动机:Aho-Corasick automation,该算法在1975年产生于贝尔实验室,是著名的多模匹配算法之一。一个常见的例子就是给出n个单词,再给出一段包含m个字符的文章,让你找出有多少个单词在文章里出现过。要搞懂AC自动机,先得有模式树(字典树)Trie和KMP模式匹配算法的基础知识。AC自动机算法分为3步:构造一棵Trie树,构造失败指针和模式匹配过程。如果你对KMP算法和了解的话,应该知道KMP算法中的next函数(shift函数或者fail函数)是干什么用的。KMP中我们用两个指针i和j分别表示,A[i-j+ 1..i]与B[1..j]完全相等。也就是说,. 阅读全文
posted @ 2013-02-18 22:02 proverbs 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 题意:给出一些单词,和一段文本,输出文本中出现的单词个数,出现多次算一次。模板题。View Code 1 #include <iostream> 2 #include <cstdlib> 3 #include <cstdio> 4 #include <cstring> 5 #include <algorithm> 6 7 #define N 1000010 8 9 using namespace std; 10 11 struct TR 12 { 13 int son[26],fail,bot; 14 }tr[N]; 15 16 in 阅读全文
posted @ 2013-02-18 21:33 proverbs 阅读(240) 评论(0) 推荐(0) 编辑
摘要: 题解:这种数据范围果断矩阵乘法,其实dp什么的也特别显然,就是求转移矩阵特别恶心。用最小表示法(表示现学的压力比较大)表示连通性。能多暴力就多暴力的枚举,反正数据范围小~唯一需要注意的是转移的时候有两种情况是不合法的:1、第(i-k)个点不和第(i-k+1)到i个点连通2、第i个点连到已经在一个连通块中的两个点wa了半天,然后不想做了的时候突然发现ac了。。莫名其妙。。。代码比较丑陋。。View Code 1 #include <iostream> 2 #include <cstdlib> 3 #include <cstdio> 4 #include < 阅读全文
posted @ 2013-02-17 17:32 proverbs 阅读(1330) 评论(0) 推荐(0) 编辑
摘要: 题意:给定N (1 ≤ N ≤ 10)个长度不超过6的单词,求由大写字母组成长度为L的包含至少一个给定单词的字符串有多少种,答案 mod 10007,(1 ≤ L ≤ 10^6)。题解:这个题最早是在一个关于trie图的论文中看到了,最近jzh又讲到了这个题,于是就把它做了~大致有两种做法,两种方法都需要矩阵乘法加速1、trie图中的dp2、直接人工减少转移数量具体做法点击这里大致思路就是将不可能构成单词的前缀合成一类,然后胡搞就行了。View Code 1 #include <iostream> 2 #include <cstring> 3 #include < 阅读全文
posted @ 2013-02-17 12:49 proverbs 阅读(520) 评论(0) 推荐(0) 编辑
摘要: 题意:求平面最远点对。输出最远距离的平方。参考:http://www.cnblogs.com/Booble/archive/2011/04/03/2004865.htmlhttp://www.cppblog.com/staryjy/archive/2009/11/19/101412.htmlView Code 1 #include <iostream> 2 #include <cstdlib> 3 #include <cstdio> 4 #include <cstring> 5 #include <algorithm> 6 #incl 阅读全文
posted @ 2013-02-15 00:07 proverbs 阅读(280) 评论(0) 推荐(0) 编辑
摘要: 题意:国王想建一个周长最短的城墙,使墙的任意一点到城墙的距离都 大于 rr。求这面墙的周长。题解:凸包 水平序graham扫描法显然答案就是:凸包的周长+半径为rr的圆的周长View Code 1 #include <iostream> 2 #include <cstdlib> 3 #include <cstdio> 4 #include <algorithm> 5 #include <cstring> 6 #include <cmath> 7 8 #define N 1010 9 #define EPS 1e-710 # 阅读全文
posted @ 2013-02-14 20:28 proverbs 阅读(265) 评论(0) 推荐(0) 编辑
摘要: 这两天在学习计算几何,随便说说自己的学习过程吧。 基本的叉积、点积和凸包等东西就不多说什么了,网上一搜一大堆,切一些题目基本熟悉了就差不多了。 一些基本的题目可以自己搜索,比如这个blog:http://blog.sina.com.cn/s/blog_49c5866c0100f3om.html 接下来,研究了半平面交,思想方法看07年朱泽园的国家队论文,模板代码参考自我校大牛韬哥:http://www.owent.net/2010/10/acm-%E8%AE%A1%E7%AE%97%E5%87%A0%E4%BD%95-%E4%B8%AA%E4%BA%BA%E6%A8%A1%E6%9D%B... 阅读全文
posted @ 2013-02-13 21:32 proverbs 阅读(555) 评论(0) 推荐(0) 编辑
摘要: 题意:最长的出现k次的重复(可重叠)子串题解:和POJ 1743一样,稍作改变,求最大的话一般都是对后缀数组二分处理。。http://www.cnblogs.com/proverbs/archive/2013/02/05/2893419.html判定条件从位置相差>=m改为是否存在一个块内后缀的个数大于等于m数比较大,快排搞定,好像基数排序也可以。View Code 1 #include <iostream> 2 #include <cstring> 3 #include <cstdio> 4 #include <cstdlib> 5 #i 阅读全文
posted @ 2013-02-05 23:29 proverbs 阅读(186) 评论(0) 推荐(0) 编辑
摘要: 题意:有N(1 <= N <=20000)个音符的序列来表示一首乐曲,每个音符都是1..88范围内的整数,现在要找一个重复的主题。“主题”是整个音符序列的一个子串,它需要满足如下条件:1.长度至少为5个音符2.在乐曲中重复出现(可能经过转调,“转调”的意思是主题序列中每个音符都被加上或减去了同一个整数值。)3.重复出现的同一主题不能有公共部分。题解:和最长重复子串(可重叠)的思路是一样的。只是我们需要在height数组中二分最小区间。若mid为二分值,删除所有的height[i]<mid的部分,会把height数组分成很多块,显然,我们要求的lcp一定在同一块内(后缀i和后缀 阅读全文
posted @ 2013-02-05 21:26 proverbs 阅读(1400) 评论(0) 推荐(0) 编辑
上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 25 下一页