
动态规划
文章平均质量分 71
u011327476
这个作者很懒,什么都没留下…
展开
-
hdu5009 离散化+dp+剪枝
我觉得每道卡时间的题都可以受益良多显然不管怎样,相邻重复数字都是可以去重的,所以先去重n才5*10^4,a[i]有10^9,显然要把颜色数离散化dp[i]表示(1~i)的最小花费dp[i] = min( dp[j]+colors(j~i)^2, dp[i] );因为颜色数现在有5*10^4,所以可以遍历去数color(j~i)原创 2014-09-19 09:10:32 · 413 阅读 · 0 评论 -
codeforces 486D Valid Sets 树形dp
D. Valid Setstime limit per test1 secondmemory limit per test256 megabytesinputstandard inputoutputstandard outputAs you know, an undirected connected graph wit原创 2014-12-04 10:42:37 · 426 阅读 · 0 评论 -
codechef Chef and Bracket-Pairs
好dp原创 2014-12-17 08:55:55 · 362 阅读 · 0 评论 -
hdu 1561 The more, The Better 树形dp
dp[u][j] 表示以u为根的子树,攻克j个城堡所能获得的最多宝物dp[0][m+1]是答案本质上还需要多一维dp[i][u][j]表示在u的前i棵子树中dp[i][u][j] = max(dp[i-1][u][j], dp[v][k]+dp[i-1][u][j-k]);要把i消掉只需j逆序即可dp[u][j] = max(dp[u][j], dp[v][k] + dp[u]原创 2014-10-13 14:29:18 · 321 阅读 · 0 评论 -
zoj 3822 Domination 概率dp
第i天的时候,有j行被选,有k列被选idp[i][j][k] += dp[i-1][j][k] * (k*j)/(n*m-i+1) += dp[i-1][j-1][k] * k*(n-j+1)/(n*m-i+1) += dp[i-1][j][k-1] * (m-k+1)*j/(n*m-i+1) += dp[i-1][j-1][k-1] * (m-k+1原创 2014-10-12 21:34:13 · 362 阅读 · 0 评论 -
hdu 1712 ACboy needs your help 背包dp
转移方程很显然:dp(i, j) = max(dp(i-1, j-k)+A[i,k], dp(i, j))但是写的时候wa了好久实际上是这里:原创 2014-10-13 23:26:31 · 335 阅读 · 0 评论 -
poj 1947 Rebuilding Roads
通过删掉最少的边,我们得到以u为根的,节点数为j的子树删掉的边数为dp[u][j]感觉把树形背包的递推写成三维的更加直观而且准确dp[i][u][j]是u的前i棵子树dp[i][u][j] = min(dp[i-1][u][j-k] + dp[v][k] , dp[i-1][u][j-k]);不这么写的话这题我很容易想偏原创 2014-10-13 22:03:46 · 310 阅读 · 0 评论 -
hdu 4800 Josephina and RPG 简单Dp
一开始意淫了,以为概率大于0.5才算赢。。#include #include #include #include #include #include #include #include #include using namespace std;#define INF 1e9#define maxn#define rep(i,x,y) for(int i=x;i<原创 2014-10-03 12:50:12 · 605 阅读 · 1 评论 -
hdu 4976 ( A simple greedy problem ) 贪心+dp
原本以为每次杀血最少的那个。。。果然每道题都有一个优美但是错误的贪心。。。dragon专门趁着敌人血为1的时候去砍第i回合(victor砍了i次),血为i的所有敌人都会被干掉所以要让尽量多的敌人血量不同就是要让原本血为x的敌人降到血为i用dp的话dp[i][j]表示第i回合,dragon垫了j次刀,能杀的最多的人数可以用背包dp[i][j] = max(dp原创 2014-10-08 18:00:03 · 368 阅读 · 0 评论 -
hdu 4901 The Romantic Hero (dp)
#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define INF 1e9#define maxn 1005#define MOD 1000000007#define rep(i,x,y) for(int i=x;i原创 2014-10-08 10:04:01 · 300 阅读 · 0 评论 -
hdu4906 Our happy ending 状压dp
#include#include#include#include#include#include#include#include#include#includeusing namespace std;#define INF 1e9#define maxn#define MOD 1000000007#define rep(i,x,y) for(int i=x;i<=y;i原创 2014-10-08 08:26:09 · 492 阅读 · 0 评论 -
poj 1160 经典dp
#include#include#includeusing namespace std;#define INF 1e9#define maxn 310#define rep(i,x,y) for(int i=x;i<=y;i++)#define mset(x) memset(x,0,sizeof(x))int s[maxn], n, k;int dp[maxn][31];int原创 2014-08-11 22:35:25 · 344 阅读 · 0 评论 -
FacebookHackerCup_Round1 Winning at Sports
比分为x:k-xstressful : dpdp[k][x] = dp[k-1][x] dp[k][x] += dp[k-1][x-1] dp[1][0] = 1;stressfree : dpdp[k][x] += dp[k-1][x]dp[k][x] += dp[k-1][x-1]dp[1][1] = 1;#include #include原创 2015-01-19 10:52:21 · 187 阅读 · 0 评论