![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 80
gyarenas
这个作者很懒,什么都没留下…
展开
-
一道不错的dp题
http://codeforces.com/contest/18/problem/E状态很容易设计,但如果直接求解的话复杂度很高,需要技巧优化决策步骤。#include #include #include #include #include #include #include using namespace std;typedef long long LL;t原创 2015-04-29 16:12:44 · 580 阅读 · 0 评论 -
Black and white hdu3633
和Black&white类似,只要再加一维记录分数即可(-64~64)#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #in原创 2013-07-23 13:11:51 · 838 阅读 · 0 评论 -
Tower Defence hdu3958
可以转化成求解一条不能接触的最长路径,拐角处可以接触,如果做过channel的话,这道题相对就简单了,不用记录(x-1, y-1)是否有路径了。#include #include #include #include #include #include #include #include #include #include #include #includ原创 2013-07-24 18:23:01 · 828 阅读 · 0 评论 -
Channel LA4789
从左上方到右下方的一条简单路径问题,但是要求路径不能有任何的接触,所以除了要记录插头信息外,还要额外记录(M+1)个格子内是否有路径,状态转移的时候需要仔细分析,否则很容易出错#include #include #include #include #include #include #include #include #include #include #inclu原创 2013-07-23 16:49:04 · 1069 阅读 · 0 评论 -
circuits hdoj4285
和画圈圈有点像,用射线法区分是在回路里面内部还是回路外部,回路内部不允许产生回路#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2013-08-02 17:36:39 · 560 阅读 · 0 评论 -
Generator zoj2619
这题和hdu3058要求差不多,只不过只有一个终止串,但正因为如此,生成的串长度期望也增加了,long double精度也不够了,之后网上看到解集全部是整数(为什么还没想通),所以可以用整数消元。#include #include #include #include #include #include #include #include #include #i原创 2013-05-28 22:08:53 · 769 阅读 · 0 评论 -
Generator hdu3058
trie图上递推+高斯消元, 卡精度题,代码挫了,C++过不了(long double也不行),G++可以过 , 对于结果比较大的数据会出错比如 8 1AAAAAAAAAAA这组数据我的代码在C++和G++输出就不同,还有就是有double中的运算尽量应尽量避免除法运算,精度损失较大 #include #include #include #include #i原创 2013-05-27 20:10:20 · 878 阅读 · 0 评论 -
Password Suspects LA4126
AC自动机+状态压缩递推,通过这题主要学习了一下输出答案的方法,DP的话输出状态比较好办,因为最优决策一般只是一条路径,所以记录一下前驱可以用线性的复杂度输出路径,而递推确是多条路径的合集,输出路径比较麻烦,需要根据最终状态向前递推,并把经过的路径节点全部标记出来,由于递推状态设计本身是不会有重复的路径的,所以最后再从头dfs一遍访问过的节点并且记录,当递归深度合适时,输出记录即可。原创 2013-05-24 20:36:06 · 1062 阅读 · 0 评论 -
Resource Archiver hdu3247
通过这题加深了对trie图的认识,trie图建好之后,匹配就不再需要fail指针了,在解决生成串类问题中,由于有禁止的包含的串,一定不能用fail指针进行转移,否则生成的串中有可能包含禁止串。 这道题关键在bfs求0点和resource串尾节点这些点俩俩之间最小距离,有俩种方法,第一种是只通过ch来转移,但这样求出来的最短路不一定是最短的,因为有些resource串可能是另一些resour原创 2013-05-23 20:52:27 · 1624 阅读 · 0 评论 -
生成树计数 NOI2007
这题一定要把状态认识清楚,因为只选最后K个点的连通性作为状态,所以一个状态可能会对应很多的连边的情况,由于无法找到特殊的状态吧初始情况地推出来,所以初始情况需要暴力求解,然后再用矩阵加速。#include #include #include #include #include #include #include #include #include #include原创 2013-07-23 13:07:51 · 1650 阅读 · 0 评论 -
画圈圈 bzoj2170
注意此题是允许出现回路套回路的情况的,用射线法判断在图形内还是图形外,由于方格图的特殊性,只要记录在点上方的路径数的奇偶性就可以了,注意端点的时候只能取一个方向的端点。用括号表示法搞的#include #include #include #include #include #include #include #include #include #include #i原创 2013-07-23 13:01:32 · 793 阅读 · 0 评论 -
Plan hdoj3377
额原创 2013-07-12 08:51:48 · 605 阅读 · 0 评论 -
Beautiful Meadow zoj3213
有障碍方格总全职最大的一条简单路径问题,加一个状态位表示是否已经形成了一条简单路径,还要注意转移的条件。#include #include #include #include #include #include #include #include #include #include #include #include #include #include原创 2013-07-15 17:18:41 · 673 阅读 · 0 评论 -
Formula1 URAL1519
这题可以说是正式的插头dp,需要对插头标号,虽然研读了hh的模板和论文,但写起来还是花了很多时间,主要是细节方面的东西,比如第一列和最后一列需要特殊讨论,还有最后一个合法格子也需要特殊讨论#include #include #include #include #include #include #include #include #include #include原创 2013-07-09 16:07:47 · 1474 阅读 · 0 评论 -
Pandora adventure FZU1977
这题属于不必走完所有格子的一条回路问题,参考别人的思路,加了一个是否形成环的状态位,但效率好低啊,不知道括号表示法对这种问题效率如何。#include #include #include #include #include #include #include #include #include #include #include #include #inc原创 2013-07-12 09:00:40 · 674 阅读 · 0 评论 -
Manhattan Wiring poj3133
确定起点和终点的俩条简单路径问题,可以规定每个格子只能有2号插头或3号插头或空插头,允许合并相同编号的插头,这样可能会产生冗余的回路,但由于此题求得是最小解,所以这种情况会被筛选掉,当然如果求最长路径的话就不能这样了,只能使用最小表示法编号,然后合并不同编号的插头。#include #include #include #include #include #include #incl原创 2013-07-15 21:58:31 · 643 阅读 · 0 评论 -
Black & White UVA10572
#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #includ原创 2013-07-17 19:20:07 · 683 阅读 · 0 评论 -
Good Substrings CF271D
SAM上的DP#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #includ原创 2013-07-18 07:31:58 · 576 阅读 · 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 · 747 阅读 · 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 · 857 阅读 · 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 · 1141 阅读 · 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 · 1156 阅读 · 0 评论 -
无向图中国邮路(小数据版)
http://ac.jobdu.com/problem.php?pid=1430#include #include #include #include #include #include #include #include #include #include #include #include #include #include #inclu原创 2013-11-23 21:14:38 · 1199 阅读 · 0 评论 -
Good Substrings
http://codeforces.com/contest/316/problem/G3SAM上DP在某岛的博客上看到的,要义就是一个串的子串必然是该串某个后缀的前缀,所以从表示该状态的子串节点往后走必然会走到那个串的尾节点。#include #include #include #include #include #include #include原创 2013-12-01 12:06:14 · 742 阅读 · 0 评论 -
吉哥系列故事——恨7不成妻 hdu4507
数位DP, 继续练习记忆化搜索的数位DP写法,状态转移需要推导一下,是依据这个性质(a+b1)^2+(a+b2)^2+...(a+bn)^2 = n*a^2+2*n*(b1+b2+...bn)+b1^2+b2^2+...bn^2#include #include #include #include #include #include #include #i原创 2013-06-09 22:04:42 · 1455 阅读 · 2 评论 -
数位DP题集
强烈推荐记忆化搜索写法,好写,通用。入门题:hdoj 2089#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #原创 2013-06-12 20:57:12 · 1439 阅读 · 0 评论 -
steiner tree的几道题目
hdu 4085http://acm.hdu.edu.cn/showproblem.php?pid=4085注意森林情况转移时要注意保证每个子森林的房间数等于避难所数#include #include #include #include #include #include #include #include #include #include #include原创 2013-12-09 16:34:14 · 848 阅读 · 0 评论 -
Shut the Box HDU4212
http://acm.hdu.edu.cn/showproblem.php?pid=4212论文写烦了,水了一道很水的一道状压DP,状态很稀疏用map搞下,预处理很关键。#include #include #include #include #include #include #include #include #include #include #incl原创 2014-04-02 22:52:35 · 827 阅读 · 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 · 628 阅读 · 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 · 830 阅读 · 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 · 891 阅读 · 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 · 611 阅读 · 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 · 611 阅读 · 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 · 876 阅读 · 0 评论 -
游泳池
http://msbop.openjudge.cn/bop2013/R2_C/广义路径问题#include #include #include #include #include #include #include #include #include #include #include #include #include #include #原创 2013-08-11 21:45:26 · 757 阅读 · 0 评论 -
我要长高
http://www.acm.uestc.edu.cn/problem.php?pid=1685单调队列优化DP#include #include #include #include #include #include #include #include #include #include #include #include #include #原创 2013-08-13 16:17:46 · 748 阅读 · 0 评论 -
生产产品
https://www.vijos.org/p/1243论文题,对每台机器都维护一个队列,进入队列总个数为O(M*N^2),总的时间复杂度也为O(M*N^2)。#include #include #include #include #include #include #include #include #include #include #include #in原创 2013-08-15 15:31:12 · 512 阅读 · 0 评论 -
Sequence Partitioning poj3245
题意不太好懂,大概就是给出n对数,每对数都是有序对即, 求这些有序对的一个划分,需要满足给出的俩个条件条件一:设对序列划分的第k部分为Tk,则对于任意的k1 Aj; 条件二: ∑ max(Ai) (i∈Tk) 同时要最小化max(∑ Bi (i∈Tk) ) 分析后不难得出条件一可以通过预处理给出的序列来满足,预处理后的序列仍然是有序对,题目要求的是最大值最小化,不难想到二分原创 2013-08-17 15:41:19 · 703 阅读 · 0 评论 -
Tour in the Castle zoj3256
这题做的很纠结,插头dp建状态图然后矩阵快速幂求路径条数,一定要把起点和终点设计好,一开始建出来的状态图是对的,但是有很多冗余的状态,自己测了一下,必须TLE,然后又重新设计转移和状态,然后节点个数没有问题了,但是连边又出现问题,样例还是比较厚道的,debug了一下午终于过掉样例, 错误比较隐蔽,已在注释里标出。#include #include #include #includ原创 2013-07-10 21:53:58 · 626 阅读 · 0 评论 -
Tony's Tour poj1739
确定了起点和终点的简单路径问题,和简单回路差不多,注意处理起点和终点以及特殊情况即可。#include #include #include #include #include #include #include #include #include #include #include #include #include #include #incl原创 2013-07-09 22:04:35 · 609 阅读 · 0 评论