随笔分类 -  动态规划

摘要:"HDU 6076 Security Check" Problem : 有两个长度为n的队列过安检,每个人有一个特征值。如果两个队列中的第一个人的特征值之差小于等于k,那么一次只能检查其中一个人,否则一次可以检查两个人。每次检查花费1的世时间。问最后检查完所有人之后所需要的时间。(n k) dp[i 阅读全文
posted @ 2017-08-03 21:25 rpSebastian 阅读(594) 评论(0) 推荐(0)
摘要:题目大意 有r*s张扑克牌,数字从1到 r,每种数字有s种颜色。 询问对于所有随机的d张牌,能选出c张组成顺子的概率和组成同花的概率。 解题分析 对于组成顺子的概率,令dp[i][j][k]表示一共选出了i张牌,数字从1~j,最后有k张牌是顺子。对于每个数字进行考虑,有0~s种选法。要保证连续c张牌 阅读全文
posted @ 2017-05-02 22:28 rpSebastian 阅读(307) 评论(0) 推荐(0)
摘要:Problem 炮兵阵地 题目大意 给你一张n*m的地图,一些地区是空地,一些地区是障碍。 可以在空地上布置炮兵部队,炮兵部队的攻击范围为上下左右各两格。 询问最多可以布置多少个炮兵部队,且互不伤害。 0<=N <= 100 , 0<=M <= 10 解题分析 由于攻击范围是两格,所以用dp[i][ 阅读全文
posted @ 2016-08-20 10:58 rpSebastian 阅读(149) 评论(0) 推荐(0)
摘要:Problem Mountain 题目大意 给定一张n*m的地图,由 . 和 X 组成。要求给每个点一个1~n*m的数字(每个点不同),使得编号为X的点小于其周围的点,编号为.的点至少大于一个其周围的点。 n<=5 , m<=5。 解题分析 考虑从1~n*m,从小到大依次填数,则如果某个位置编号为X 阅读全文
posted @ 2016-08-19 16:06 rpSebastian 阅读(298) 评论(0) 推荐(0)
摘要:Problem color II 题目大意 定义一个无向图的价值为给每个节点染色使得每条边连接的两个节点颜色不同的最少颜色数。 对于给定的一张由n个点组成的无向图,求该图的2^n-1张非空子图的价值。 n <= 18 解题分析 官方题解: 直接状压dp就行了,f[S]表示点集S的色数,枚举子集转移( 阅读全文
posted @ 2016-08-11 20:53 rpSebastian 阅读(524) 评论(0) 推荐(0)
摘要:Problem To My Girlfriend (HDU 5800) 题目大意 给定一个由n个元素组成的序列,和s (n<=1000,s<=1000) 求 : f (i,j,k,l,m) 指必定选第i,j号元素,必定不选k,l号元素,选的元素总和为m的子集个数。 解题分析 一开始想了个n^3的DP 阅读全文
posted @ 2016-08-04 19:46 rpSebastian 阅读(605) 评论(0) 推荐(0)
摘要:f[i] = min { f[j] + sqr(a[i] - a[j]) }f[i]= min { -2 * a[i] * a[j] + a[j] * a[j] + f[j] } + a[i] * a[i]由于a[i]不是单调递增的,不能直接斜率dp。考虑有cdq分治来做,复杂度(nlog2n) 1... 阅读全文
posted @ 2015-06-27 17:10 rpSebastian 阅读(181) 评论(0) 推荐(0)
摘要:一个正整数的价值就是把这个数的十进制写出来之后,最长的等差子串的长度。求出在[l,r]范围内的数字的价值总和。(lb then exit(a) else exit(b); 8 end; 9 function dfs(now,ml,l,d,pre,st,lim:longint):int64;10 va... 阅读全文
posted @ 2015-06-07 18:15 rpSebastian 阅读(577) 评论(2) 推荐(0)
摘要:由于方块最多涉及3行,于是考虑将每两行状压起来,dfs搜索每种状态之间的转移。这样一共有2^12种状态,显然进行矩阵快速幂优化时会超时,便考虑减少状态。进行两遍bfs,分别为初始状态可以到达的状态,和可以到达终止状态的状态。同时出现在两次bfs中的状态即为有效状态,一共有141种。这样就可以跑出来了... 阅读全文
posted @ 2015-06-03 21:04 rpSebastian 阅读(367) 评论(0) 推荐(0)
摘要:斜率DP设dp[i][j]表示前i点,炸掉j条边的最小值。jky(q[h+1],q[h])) do inc(h); f[i,j]:=-sum[i]*sum[q[h]]+f[q[h],j-1]-cost[q[h]]+sum[q[h]]*sum[q[h]]+cost[i]; ... 阅读全文
posted @ 2015-02-26 11:16 rpSebastian 阅读(121) 评论(0) 推荐(0)
摘要:f[i]=min(f[j]+w[j,i])+c[i]; j∈[0,i-1] w[j,i]=p[j+1]*(x[i]-x[j+1])+...+p[i]*(x[i]-x[i]); 最裸的DP是n^2的,显然会超时 现在化简一下w[j,i] w[j,i]=x[i]*(p[j+1]+...+p[i])-(x 阅读全文
posted @ 2015-01-14 15:26 rpSebastian 阅读(286) 评论(0) 推荐(0)
摘要:f[i,0] 表示 第i个人不参加舞会f[i,1] 表示 第i个人参加舞会f[i,1]=sigma(f[j,0])+v[i] j 为 i 的孩子f[i,1]=sigma(max(f[j,0],f[j,1])) j 为 i 的孩子ans=max(f[root,0],f[root,1])Progra... 阅读全文
posted @ 2014-12-11 21:55 rpSebastian 阅读(166) 评论(0) 推荐(0)