
数据结构
文章平均质量分 81
gyarenas
这个作者很懒,什么都没留下…
展开
-
Resource Archiver hdu3247
通过这题加深了对trie图的认识,trie图建好之后,匹配就不再需要fail指针了,在解决生成串类问题中,由于有禁止的包含的串,一定不能用fail指针进行转移,否则生成的串中有可能包含禁止串。 这道题关键在bfs求0点和resource串尾节点这些点俩俩之间最小距离,有俩种方法,第一种是只通过ch来转移,但这样求出来的最短路不一定是最短的,因为有些resource串可能是另一些resour原创 2013-05-23 20:52:27 · 1658 阅读 · 0 评论 -
Corporate Identity poj3450
SAM和SA都可以搞,练习一下SAM输出答案。#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #incl原创 2013-08-06 14:43:23 · 563 阅读 · 0 评论 -
Lawrence hdu2829
斜率优化DPdp[i][j]表示前i个仓库爆炸j次得到的最小值dp[i][j] = min(dp[k][j]+w[k+1, i]) (j w[l, r]表示从第l个仓库到第r个仓库所得的Strategic Value设a[i]表示第i个仓库的价值w[l, r] = ∑( ∑a[i]*a[j] (i 设s[i] = ∑a[k] (1 as[i] = ∑a[k]*s原创 2013-08-19 16:13:57 · 636 阅读 · 0 评论 -
货币兑换Cash
http://www.lydsy.com/JudgeOnline/problem.php?id=1492这道题的关键在于 一天可以交易任意次和必然存在一种最优的买卖方案满足:·每次买进操作使用完所有的人民币;·每次卖出操作卖出所有的金券。这样就可以用一维的DP求解了,设dp[i]表示前i天所得的最优解由于只能按比例购买,所以可以把A和B组合成一种价格为K = (a[j]*r原创 2013-08-22 16:53:44 · 897 阅读 · 0 评论 -
喵星球上的点名
http://www.lydsy.com/JudgeOnline/problem.php?id=2754SA的多模板匹配,复杂度O(len1+log(len2)),len1为查找串长度,len2为模板串长度#include #include #include #include #include #include #include #include #include原创 2013-08-13 11:28:12 · 641 阅读 · 0 评论 -
Two Sawmills(锯木厂选址)
http://main.edu.pl/en/archive/ceoi/2004/two斜率优化DP,应该说是第一道斜率优化DP了,推公式的时候各种坑,还是参照了hzq神牛的思路,细节方面稍有不同,为了思维方便,我先将给出的序列翻转了,也就是把从山顶到山下的点顺序边成了从山下到山顶,编号从1开始,第一个点即为海拔最低的伐木场,所以共有n+1个点,w[i]表示第i个点的重量,dis原创 2013-08-17 16:37:17 · 853 阅读 · 0 评论 -
仓库建设
http://www.lydsy.com/JudgeOnline/problem.php?id=1096这道题和那道锯木厂选址很像,按照自己的思维习惯我把所有的点翻转了,即从山底到山顶.dist[i]表示第i个点到第一个点的距离,c[i]为在第i个点建的费用,p[i]表示第i个点的存货 dp[i] = min(dp[j-1]+∑p[k]*(dist[k]-dist[j])+c[j]原创 2013-08-18 14:21:21 · 646 阅读 · 0 评论 -
玩具装箱
http://www.lydsy.com/JudgeOnline/problem.php?id=1010斜率优化DP设dp[i]表示前i个玩具装箱所需的最小耗费dp[i] = min(dp[j]+(i-j-1+∑C[k]-L)^2)设sc[i] = ∑C[k] ( 1则有 dp[j]+(i-j-1+∑C[k]-L)^2= dp[j]+(i-j-1+sc[i]-sc[原创 2013-08-18 14:02:27 · 1163 阅读 · 0 评论 -
Street Fighter hdoj3927
最小支配集问题,还有一个限制就是每个人只能选一次, 所以既是重复覆盖,又是精确覆盖,是Dancing Links的综合应用.remove1为精确覆盖删除,remove2为重复覆盖删除, 一定要注意删除的顺序。#include #include #include #include #include #include #include #include #include原创 2013-09-08 21:09:40 · 544 阅读 · 0 评论 -
cheat (CTSC2012)
http://www.lydsy.com/JudgeOnline/problem.php?id=2806用特殊字符分隔每个“标准作文”,建SAM,对于每个询问串,先把询问串在SAM里跑一遍求出每个位置在“标准作文”的子串中出现的最长后缀,二分询问串长,然后单调队列优化dp用判别。#include #include #include #include #include #i原创 2013-09-03 19:20:56 · 1173 阅读 · 0 评论 -
Password Suspects LA4126
AC自动机+状态压缩递推,通过这题主要学习了一下输出答案的方法,DP的话输出状态比较好办,因为最优决策一般只是一条路径,所以记录一下前驱可以用线性的复杂度输出路径,而递推确是多条路径的合集,输出路径比较麻烦,需要根据最终状态向前递推,并把经过的路径节点全部标记出来,由于递推状态设计本身是不会有重复的路径的,所以最后再从头dfs一遍访问过的节点并且记录,当递归深度合适时,输出记录即可。原创 2013-05-24 20:36:06 · 1085 阅读 · 0 评论 -
Substring poj1226
此题数据很水,把每个串和其反向串全部连接起来,标记的时候别忘了反向串和原串串对应同一个串#include #include #include #include #include #include #include #include #include #include #include #include #include #include #inc原创 2013-05-31 20:49:12 · 609 阅读 · 0 评论 -
Lost's revenge hdu3341
AC自动机+状态压缩DP, 由于时限卡的比较死,进制高低位的选择不同可能会导致TLE(o(╯□╰)o),详细见注释#include #include #include #include #include #include #include #include #include #include #include #include #include原创 2013-05-22 20:50:44 · 876 阅读 · 0 评论 -
Good Article Good sentence HDOJ4416
做了这题,不得不说对后缀数组的理解还是不深刻(感觉这题SAM也可以搞,等学透了SAM再来看看这题),题意就是求第一个串S1中有多少个子串不是其他串Si(i > 1)的子串,老规矩,先把串都连接起来,中间用不同的字符连接起来, 然后求每个S1的后缀与其他串Si的后缀的lcp,这表明该后缀有lcp的子串是其他串的子串,这里求lcp不用把每个S1的后缀与Si的后缀求lcp,根据后缀数组的性质,只要从左右原创 2013-06-17 20:36:44 · 606 阅读 · 0 评论 -
DNA repair hdu2457
AC自动机+DP#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #inclu原创 2013-05-21 21:55:45 · 633 阅读 · 0 评论 -
Searching the String zju3228
通过这题改正了以前一个重复模板匹配很低效的地方,见注释#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #includ原创 2013-05-21 22:05:54 · 608 阅读 · 0 评论 -
Generator zoj2619
这题和hdu3058要求差不多,只不过只有一个终止串,但正因为如此,生成的串长度期望也增加了,long double精度也不够了,之后网上看到解集全部是整数(为什么还没想通),所以可以用整数消元。#include #include #include #include #include #include #include #include #include #i原创 2013-05-28 22:08:53 · 795 阅读 · 0 评论 -
Generator hdu3058
trie图上递推+高斯消元, 卡精度题,代码挫了,C++过不了(long double也不行),G++可以过 , 对于结果比较大的数据会出错比如 8 1AAAAAAAAAAA这组数据我的代码在C++和G++输出就不同,还有就是有double中的运算尽量应尽量避免除法运算,精度损失较大 #include #include #include #include #i原创 2013-05-27 20:10:20 · 902 阅读 · 0 评论 -
b179: 空罐 Cans
链接:http://zerojudge.tw/ShowProblem?problemid=b179思路仿照hh犇,table[i][j][k]表示第i次转移后长度为j所在节点为k的串的种数分裂的基因直接用ch转移,而对于变短要分俩种情况讨论,当前长度小于等于所在节点的深度时使用fail指针转移(实际上当前长度小于节点深度这种情况是不存在的,所以只考虑等于的情况即可),这相当于把当前原创 2013-05-22 21:39:04 · 765 阅读 · 0 评论 -
Ring hdu 2296
AC自动机+DP,这题尽量不要用string,我用string TLE了, string连接串时效率很低...#include #include #include #include #include #include #include #include #include #include #include #include #include #inc原创 2013-05-20 21:54:47 · 906 阅读 · 0 评论 -
Matrix Matcher UVA11019
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #includ原创 2013-05-14 10:40:03 · 619 阅读 · 0 评论 -
关于图的m着色问题
以前一直以为图的着色问题解等于最大团的顶点数,今天发现原来是有问题的,例如5个顶点的环最大团顶点数为2,但却需要三种颜色。关于m着色问题可以用二分+DLX解决,应该会比爆搜要快。poj 1129#include #include #include #include #include #include #include #include #include #in原创 2013-09-16 20:14:01 · 1387 阅读 · 0 评论 -
Little Elephant and Inversions CF220E
函数式线段树的应用#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #in原创 2013-10-02 20:18:59 · 805 阅读 · 0 评论 -
Good Substrings
http://codeforces.com/contest/316/problem/G3SAM上DP在某岛的博客上看到的,要义就是一个串的子串必然是该串某个后缀的前缀,所以从表示该状态的子串节点往后走必然会走到那个串的尾节点。#include #include #include #include #include #include #include原创 2013-12-01 12:06:14 · 762 阅读 · 0 评论 -
阿狸的打字机 NOI2011
AC自动机是肯定的了,但关键是如何完成快速匹配,如果像普通的自动机那样在每个状态都通过fail转移累加的话肯定会超时的,所以需要一种新的方法,那就是维护fail逆向指针树的dfs序列,听上去挺麻烦的,先把所有fail指针逆向,这样就得到了一棵树(因为每个节点的出度都为1,所以逆向后每个节点入度为1,所以得到的是一棵树),而一棵树的先序dsf序列有一个很好的性质就是同任一棵子树的节点是连续排列的(前原创 2013-07-06 21:12:49 · 2644 阅读 · 0 评论 -
HDU4821
HASH后就是一个简单的线性统计了#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2014-01-04 11:47:30 · 2140 阅读 · 1 评论 -
关于维护AC自动机fail树的三道题目
由易到难e-Government CF 163Ehttp://blog.youkuaiyun.com/gyarenas/article/details/9315319GRE Words hdu 4117 http://acm.hdu.edu.cn/showproblem.php?pid=4117这题本来的做法是ac自动机优化dp,然而hdu加入了新的数据,估计构造了一些原创 2014-01-06 18:51:30 · 2775 阅读 · 0 评论 -
Marlon's String zoj3587
后缀数组或扩展kmpSA做法#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #原创 2014-01-09 21:26:50 · 671 阅读 · 0 评论 -
Rabbit Kingdom LA6461
O(n*logn)预处理出对于每个位置i,最大的left[i], right[i], 使得arr[left[i]...i...right[i]]与arr[i]互质(当然arr[i]与其本身不互质不考虑),利用链表记录一些信息,然后用树状数组维护后缀和,更新答案。#include #include #include #include #include #include #incl原创 2013-10-30 18:01:39 · 707 阅读 · 0 评论 -
Tree HDU4757
http://acm.hdu.edu.cn/showproblem.php?pid=4757函数式trie,和cot差不多,用父节点递推建立子节点,此题学到了一个函数式的小技巧,就是一开始(即root[0])并不需要把所有的节点都建出来,只要让root[0]所有的后继都指向自己就可以了。#include #include #include #include #include原创 2013-10-03 18:00:01 · 929 阅读 · 0 评论 -
Reincarnation hdu4622 hash解法
http://acm.hdu.edu.cn/showproblem.php?pid=4622这题的ha原创 2014-04-05 10:38:19 · 1515 阅读 · 1 评论 -
关于B-K tree与k-d tree一些自己想法
以前用B-K tree做过一个题,最近学习k-d tree,感觉这两个树有某些相似,这个俩种树都是寻找距目标点临近最近的点(B-K tree针对给定距离k以内,k-d tree针对给定最近的k个点)。其中B-K tree只要求数据点之间定义可度量的距离,支持求距给定点距离k以内的数据点。相对于暴力法来说,是常数级别的提高,但有时会很有效(比如数据点之间距离范围很大,但阀值k很小),一个应用就是原创 2015-05-10 19:19:41 · 2437 阅读 · 0 评论 -
相似子串 bzoj3230
http://www.lydsy.com/JudgeOnline/problem.php?id=3230后缀数组#include #include #include #include #include #include #include #include #include #include #include #include #include原创 2013-11-28 20:43:02 · 826 阅读 · 0 评论 -
AC's String HDU3973
http://acm.hdu.edu.cn/showproblem.php?pid=3973线段树维护HASH#include #include #include #include #include #include #include #include #include #include #include #include #include #inclu原创 2013-11-20 10:11:50 · 924 阅读 · 0 评论 -
middle BZOJ2653
我们平时建立函数式线段树的顺序都是按照索引建立,值作为线段树的区间,此题我们要按值的顺序建立,将索引作为线段树的区间,又涨姿势了...具体可以参考爱神的题解: http://blog.youkuaiyun.com/acm_cxlove/article/details/8566093#include #include #include #include #include #incl原创 2013-10-03 12:20:39 · 1097 阅读 · 0 评论 -
Sereja and Ballons CC SEABAL
在爱神博客找到的题, 思路很巧妙, 用链表把所有的盒子顺序连起来,然后在每次burst后维护维护链表如果盒子内的气球数不为0,则答案显然不会增加,直接输出上次答案,继续如果在burst后盒子i内的气球为0, 则增加的答案数为左端点在(L[i], i], 右端点在[i, R[i])的pair数目,然后删除这个节点(令L[R[i]] = L[i], R[L[i]] = L[i]) ,由于节点原创 2013-10-05 17:12:47 · 737 阅读 · 0 评论 -
An Easy Problem for Elfness
树上的函数式线段树, 查询那步自己写的是logn*logn的办法,可能数据比较弱的原因跑的还挺快的,可以在线段树上逼近降到logn#include #include #include #include #include #include #include #include #include #include #include #include原创 2013-10-06 09:50:05 · 677 阅读 · 0 评论 -
Paint The Wall hdu4391
分块思想, 分段hash#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2013-10-07 19:22:59 · 668 阅读 · 0 评论 -
Holes CF 13E
分块+递推#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #in原创 2013-10-08 13:41:45 · 739 阅读 · 0 评论 -
[Ahoi2013]差异 bzoj3238
后缀数组+分治#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #incl原创 2013-10-08 20:07:01 · 1836 阅读 · 0 评论