dp
文章平均质量分 77
bubbleoooooo
这个作者很懒,什么都没留下…
展开
-
poj 2541 Binary Witch(状压dp)
题意:给定一个串s1~sn 求sn+1的规则为:找一个最靠后且最长的(1 没有匹配的就为0 状压dp的解法是用dp[i][j]记录长为i值为j的最靠后的位置。 线性更新一下就行。对于每个位置i,更新以此位置为结尾的长为1~13的后缀值的位置。 若是i>=n,就通过dp[j][now],去找长为j值为now的前一个位置。j从1~13,长的状态可以更新短的状态。 附原创 2015-03-21 16:15:19 · 432 阅读 · 0 评论 -
Codeforces567F. Mausoleum(DP)
//考虑从大到小向序列中放置数字(两个两个的放),小的数字肯定在大的数字两旁。 //比如当前放置i 有三种情况,两左,一左一右,两右。 //令dp[l][r]表示l~r的放置种数(从n开始放置,放了(r-l+1)/2 个数字(每次放两个)) //那么转移方程实际上就是dp[l][r]=(A)dp[l-2][r]+(B)dp[l+1][r-1]+(C)dp[l][r-2]; //这三种情况都会更新到原创 2015-08-08 13:18:28 · 1205 阅读 · 0 评论 -
CF571B-Minimization
//571B-Minimization //对于最终的序列A //可以分成k个组,即序列中模k同余的为一组 //有n%k个长度为n/k+1的组,k-n%k个长度为n/k的组 //对于同一个组而言,求相邻数的差的和的最小值。 //只有每组内的元素都是有序的,每组内的相邻元素的差值才会最小 //对于有序序列,值为max-min //无序的序列,可以划掉有序的部分(即bi<bi+1<bi+2,可以去掉b原创 2015-08-25 12:10:26 · 751 阅读 · 0 评论 -
poj3635 Full Tank?(spfa+dp)
//package project1; //可以先不用考虑加油 //只考虑到这个点剩余油量为j的最小花费 //那么我们可以按照最短路的方式来更新 //然后再在这个点统一加油 //一升一升的更新,因为j-1是最优的,用j-1更新的j也一定是最优的。 //因为要么不加油,要么加的油量肯定大于等于1升 //如果j-1不是最优,那么少加一升的适合肯定会更新的, import java.io.*; impo原创 2015-07-31 16:41:20 · 443 阅读 · 0 评论 -
CodeForces 543d Road Improvement(巧妙地树形dp)
//如何求树上任意一点为根的dp值 //将以此点将树划分成两部分,一部分还是原来的子树 //另一部分是此点的父亲往上为子树,这一点的转化很巧妙,一次从上到下的dp即可。 //R[i]记录此点右面子树的乘积,从右到左,其实在最右的时候up[父亲]就已经计算了父亲往上的值了。现在只要记录兄弟即可。 import java.io.*; import java.util.*; public class原创 2015-08-03 21:26:28 · 483 阅读 · 0 评论 -
codeforces543A Writing Code(完全背包)
//完全背包 //首先定义dp[i][j][k]为前i个人写j行所含bug为k个的种数 //然后对于dp[i][j][k]=dp[i-1][j][k]+dp[i][j-1][k-bug[i]];//第i个人要么不写,要么再写一行 //然后用类似完全背包我们可以通过顺序遍历,省掉一维i import java.io.*; import java.util.*; public class cf {原创 2015-08-03 22:04:18 · 600 阅读 · 0 评论