随笔分类 -  dp

摘要:#include #include #include using namespace std;int a[550],b[550],dp[550][550];int main(){ int n,m,i,j,temp; int cas; scanf("%d",&cas); whi... 阅读全文
posted @ 2014-11-27 19:00 贝尔摩德 阅读(178) 评论(0) 推荐(0)
摘要:B.Appleman and Tree题目大意。一棵树上的点有的是黑的有的是白的,然后他想断开一些边使得剩下的连通分量里每个连通分量有且仅有一个黑点,求方案数。dp[u][0]表示以u为根的子树且u所在的连通分量没有黑点的方案数。dp[u][1]表示以u为根的子树且u所在的连通分量有一个黑点的方案数... 阅读全文
posted @ 2014-10-06 11:54 贝尔摩德 阅读(165) 评论(0) 推荐(0)
摘要:题目大意:n个数排成一列,在这n个数中取k段连续的长度为m的序列并最大化。dp[i][j]表示前 i 个数中取 j 段的最大值。#include #include #include using namespace std;typedef long long ll;ll dp[5100][5100],... 阅读全文
posted @ 2014-09-23 16:24 贝尔摩德 阅读(112) 评论(0) 推荐(0)
摘要:题目大意是有n个房间组成一棵树,你有m个士兵,从1号房间开始让士兵向相邻的房间出发,每个房间里有一个代价,代价是值/20个士兵,同时有一个价值,问你花费这m个士兵可以得到的最大价值是多少定义dp[i][j]表示根结点为i时,用掉j个士兵获得的最大possible。dp[i][j] = max(dp[... 阅读全文
posted @ 2014-09-05 11:55 贝尔摩德 阅读(151) 评论(0) 推荐(0)
摘要:#include #include using namespace std;#define maxn 2100int dp[maxn][maxn];int val[maxn];int n;int main(){ while(scanf("%d",&n)!=EOF) { in... 阅读全文
posted @ 2014-08-17 10:04 贝尔摩德 阅读(132) 评论(0) 推荐(0)
摘要:如果选了节点u,则不能选他的父节点和子节点,每个点有一个权值,求最大权值。#include #include #include using namespace std;#define maxn 6100#define maxm 15000struct Node{ int u,v,next;}e... 阅读全文
posted @ 2014-08-13 21:28 贝尔摩德 阅读(147) 评论(0) 推荐(0)
摘要:代码来自baka。。#include#include#include#include#include#include#include#include#include#include#include#define inf 0x3f3f3f3f#define Inf 0x3FFFFFFFFFFFFFFF... 阅读全文
posted @ 2014-08-13 20:53 贝尔摩德 阅读(211) 评论(0) 推荐(0)
摘要:#include #include #include using namespace std;#define inf 10000000int dp[11000];int n;int val[550],wei[550];int main(){ int cas,n; scanf("%d",&... 阅读全文
posted @ 2014-07-16 10:32 贝尔摩德 阅读(150) 评论(0) 推荐(0)
摘要:#include #include using namespace std;#define mod 100000000int M,N,top=0;int cur[20],dp[20][600];int state[600],num[110];bool ok(int x){ if(x&x<<1)... 阅读全文
posted @ 2014-07-15 15:04 贝尔摩德 阅读(126) 评论(0) 推荐(0)
摘要:题目大意,给出一些单词和一个句子,问这个句子最少去掉多少个字母后完全由给定的单词组成。dp[i]表示句子的前i位最少去掉多少个字母才能满足条件。则状态转移如下。最后一个字母有删掉和保留两种选择,假如删掉,那么dp[i] = dp[i-1] + 1。如果不删的话,枚举每个结尾为str[i]的单词看是否... 阅读全文
posted @ 2014-07-15 14:54 贝尔摩德 阅读(120) 评论(0) 推荐(0)
摘要:题目大意是一个奶牛可以在一些时间区间产奶,每个区间的产奶量已知,每次产完奶都要休息一下,问最大产奶量。dp方程类似最长上升子序列的n2算法,dp[i]表示以第i个区间结尾最多能产生多少奶。则dp[i] = max(dp[j] + e[i].z)。#include #include #include ... 阅读全文
posted @ 2014-07-15 14:48 贝尔摩德 阅读(142) 评论(0) 推荐(0)
摘要:dp[i][j]表示从i,j开始的最长路径,记忆化搜索一下。#include #include #include using namespace std;#define maxn 120int dp[maxn][maxn],map[maxn][maxn];int r,c;int dfs(int i,... 阅读全文
posted @ 2014-07-12 20:19 贝尔摩德 阅读(103) 评论(0) 推荐(0)
摘要:题意为F束花插入V个瓶子里面,花要按编号递增顺序插,不同花插入不同的花瓶有不同的美观程度,要求最大的美观程度。一种f[i][j]表示第i束花插入第[j]个瓶子里面所获得的最大的美观程度。则状态转移函数可以表示为f[i][j]=max(f[i-1][k]+a[i][j])其中i-1#include #... 阅读全文
posted @ 2014-07-12 20:17 贝尔摩德 阅读(122) 评论(0) 推荐(0)