![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
fa茶
这个作者很懒,什么都没留下…
展开
-
背包问题 ——第K优解 或 次优解
附上水题一枚:http://acm.hdu.edu.cn/showproblem.php?pid=2639原创 2014-07-20 16:01:08 · 1978 阅读 · 0 评论 -
树形DP经典问题
列出一些经典问题吧:1:给出一棵树 每个节点有权值 要求父节点和子节点不能同时取 求能够取得的最大值 (hdu1520)2:给出一棵树,求离每个节点最远的点的距离 (hdu2196)3:1>在一个地图上,有N座城堡,每座城堡都有一定的宝物,在每次游戏中允许攻克M个城堡并获得里面的宝物。但由于地理位置原因,有些城堡不能直接攻克,要攻克这些城堡必须先攻克其他某一个特定的城堡转载 2014-07-25 20:46:09 · 888 阅读 · 0 评论 -
HDU 2196——Computer(树形DP)
膜拜了NN个大神的代码,看了一整天,弱菜伤不起啊。求拜师啊问题分析:求树上每个节点到其它节点的最远距离每个节点到其它节点的最远距离就是以该节点为根的树所能达到的最大深度,这样子的话,要把每个节点转化为根,总共dfs的次数为节点数,肯定超时于是~一个节点的最长路:1.从该节点往下取得最长路(子树部分) 2.从该节点往上取得的最长路(父节点往上的部分)情况1:自下而上的d原创 2014-07-26 23:18:16 · 578 阅读 · 0 评论 -
HDU 3449—— Consumer(有依赖的背包)
题目分析:有n个箱子,m块钱,每个箱子能装x种d转载 2014-07-27 22:02:05 · 545 阅读 · 0 评论 -
HDU 1054——Strategic Game(树形DP)
树形DP原创 2014-07-25 19:28:10 · 677 阅读 · 0 评论 -
树形DP
HDU 1520 Anniversary party ( http://acm.split.hdu.edu.cn/showproblem.php?pid=1520)原创 2014-07-25 22:46:42 · 535 阅读 · 0 评论 -
POJ 3345——Bribing FIPA(树形DP)
题目分析:现在有n个村子,你想要用收买m个国家为你投票,其中收买第i个国家的代价是val[i]。但是有些国家存在从属关系,如果B从属于A国,则收买了A也意味着买通了B,而且这些关系是传递的。问你最小要付出的代价是多少?这题的难点在于怎么建图,弱菜不会,只能膜拜大神的代码,然后自己捉摸着敲,dfs部分就和一般的树形DP+背包差不多,只是状态的初始化有些变化建图需要加个原创 2014-07-28 20:06:18 · 550 阅读 · 0 评论 -
HDU 1159——Common Subsequence(DP)
最长公共子序列原创 2014-08-04 16:01:15 · 669 阅读 · 0 评论 -
HDU 1231——最大连续子序列(DP)
最大连续序列和原创 2014-08-04 15:32:38 · 714 阅读 · 0 评论 -
Codeforces Round #291 (Div. 2)E. Darth Vader and Tree——dp+矩阵快速幂
http://codeforces.com/contest/514/problem/E原创 2015-02-22 19:26:58 · 645 阅读 · 0 评论 -
Codeforces Round #293 (Div. 2)D.Ilya and Escalator——概率dp
http://codeforces.com/contest/518/problem/Ddp[i][j] 表示第i秒有j个人进入电梯的概率#include<bits/stdc++.h>const int maxn=2100;using namespace std;double dp[maxn][maxn];int n,t;double p;int main(){#ifndef ONLI原创 2015-03-14 21:30:00 · 405 阅读 · 0 评论 -
数位DP模板
int dfs(int i, int s, bool e) { if (i==-1) return s==target_s; if (!e && ~f[i][s]) return f[i][s]; int res = 0; int u = e?num[i]:9; for (int d = first?1:0; d res转载 2014-07-23 10:16:08 · 583 阅读 · 0 评论 -
hihoCoder1055.刷油漆——树形Dp+01背包
http://hihocoder.com/problemset/problem/1055一棵有根树,包含根节点1,选择M个连续的节点,使得权值最大dp[u][j] 表示以i为根的子树中,选择包含根节点的j个连续节点所能获得的最大权值枚举子节点选择的个数,儿子节点选择的个数,当做01背包#include <iostream>#include <cstring>#include <cstdio>#原创 2015-05-28 13:20:52 · 1200 阅读 · 0 评论 -
HDU 1561 ——The more, The Better(有依赖的树形DP)
有依赖的树形DP原创 2014-07-28 00:27:52 · 583 阅读 · 0 评论 -
HDU4734——F(x)(数位DP)
dp[i][j]表示i位数权值不超过j的数的个数注意点:dp[i][j]的值不用每次都初始化,因为它的值不受输入的影响,如果前面算过了就直接拿来用,没算过就拿来算并记录下来#include#include#include#include#include#include#include#include#include#include#include#incl原创 2014-07-23 21:22:43 · 875 阅读 · 0 评论 -
01背包水题篇之HDU3466——Proud Merchants
这是个好题,菜鸟刚学dp,这题把我以前的想法全都给完完全全的颠覆了。其实是自己没了解无后效性的概念。然后我去开开心心滴跑去问队长:”队长,队长,怎么理解动归的无后效性啊???“学长很深沉滴对我说:”做多了就会了“"噢噢”(好吧)然后学长又补了句:“能构成有向无环图的都能用DP搞."我心里想:”队长就知道搞妹~~~。“默默去翻小白书看看DAG去了。为了搞清楚这题怎原创 2014-07-20 22:27:21 · 748 阅读 · 0 评论 -
DAG上的DP之 —— 矩形嵌套
昨天队长说DAG,今早就蹦跶蹦跶滴开搞了,小白书~翻呀翻,看呀看,妈蛋,LRJ留的问题那么深奥让彩笔情何以堪啊~~德玛西亚原谅彩笔只能刷水题啊南阳理工OJ上的题:矩形嵌套时间限制:3000 ms | 内存限制:65535 KB难度:4描述有n个矩形,每个矩形可以用a,b来描述,表示长和宽。矩形X(a,b)可以嵌套在矩形Y(c,d)中当且仅原创 2014-07-21 11:42:33 · 836 阅读 · 0 评论 -
区间DP基础篇之 POJ2955——Brackets
怒拿一血,first blood,第一个区间DP,第一次就这样子莫名其妙不知不觉滴没了~~~题目虽然是鸟语,但还是很赤裸裸的告诉我们要求最大的括号匹配数,DP走起~dp[i][j]表示区间[i,j]的最大匹配数,那么最重要的状态转移方程就是:dp[i][j]=max(dp[i][k]+dp[k+1][j])对啦,要先初始化边界啊,两步走~:memset(dp,0,siz原创 2014-07-21 19:41:02 · 743 阅读 · 0 评论 -
区间DP基础篇之 POJ1159——Palindrome
题目大意:给定一个字符串,求最少插入几个字符让该字符串成为回文串法一:dp[i][j]表示使区间[i,j]成为回文串最小插入的字符数,则状态转移方程1、if s[i]==s[len-1] 则:d[i][j]=d[i+1][j-1]2、else d[i]=min(dp[i+1][j],dp[i][j-1]) 首尾字符不同的时候,有两种决策。1、将新字符插在首位,那么状态就原创 2014-07-21 21:18:46 · 614 阅读 · 0 评论 -
HDU 4389——X mod f(x)(数位DP)
X mod f(x)Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Problem DescriptionHere is a function f(x): int f ( int x ) { if ( x == 0 ) ret原创 2014-07-24 10:38:10 · 821 阅读 · 0 评论 -
ACDream 1064——完美数(数位DP)
完美数Time Limit: 2000/1000MS (Java/Others)Memory Limit: 128000/64000KB (Java/Others)SubmitStatisticNext ProblemProblem Description8是中国人很喜欢的一个数字,但是如果有3的存在就变成了38,就不是很好了。。你能告诉我,在[L, R] 的正整数区间内,要么原创 2014-07-23 11:37:03 · 801 阅读 · 0 评论 -
HDU3555——Bomb(数位DP)
递推式:原创 2014-07-23 10:12:48 · 536 阅读 · 0 评论 -
HDU4283——You Are the One(区间DP)
题目大意:有n个男屌丝事先按1,2,3,,,,,,n的顺序排好,每个人都有一个不开心值unhappy[i],如果第i个人第k个上台找对象,那么该屌丝男的不开心值就会为(k-1)*unhappy[i],因为在他前面有k-1个人嘛,导演为了让所有男屌的总不开心值最小,搞了一个小黑屋,可以通过小黑屋来改变男屌的出场顺序注意:这个小黑屋是个栈,男屌的顺序是排好了的,但是可以通过入栈出栈来改变男屌的原创 2014-07-22 10:33:02 · 1102 阅读 · 2 评论 -
01背包水题篇之HDU1864——最大报销额
这个题目好果的01,只要把每个数乘以100,就能解决下标的问题了继续贴代码环节(自己的代码好丑啊~~~)#include#include#include#include#define maxn 3100000using namespace std;int dp[maxn];int p[31];int main(){ double Q; int n,原创 2014-07-21 09:31:04 · 662 阅读 · 0 评论 -
区间DP结构
区间动态规划问题一般都是考虑,对于每段区间,他们的最优值都是由几段更小区间的最优值得到,是分治思想的一种应用,将一个区间问题不断划分为更小的区间直至一个元素组成的区间,枚举他们的组合 ,求合并后的最优值。设F[i,j](1最小区间F[i,i]=0(一个数字无法合并,∴代价为0)每次用变量k(iFor p:=1 to n do // p是区间长度,作为阶段。 fo转载 2014-07-21 21:33:58 · 525 阅读 · 0 评论 -
数位DP入门篇之HDU2089——不要62
记忆化搜索原创 2014-07-23 11:11:17 · 600 阅读 · 0 评论 -
HDU——B-number(数位DP)
题目大意:要找出1到n之间有多少个数含13,并且能被13整除记忆化搜索:dp[pos][pre][mod][statu],pos位数,pre前一位,mod余数,statu状态有2个状态:含13,不含13#include#include#include#include#include#include#include#include#include#inc原创 2014-07-23 17:31:40 · 802 阅读 · 0 评论 -
HDU4604.Deque——nlogn求最长上升子序列的长度
http://acm.hdu.edu.cn/showproblem.php?pid=4604把一个序列中的元素放到队列里面,有3种操作,对于第i个元素 1.放到队头2.放到队尾3.舍弃 求最长上升序列的长度法1:求出每个以a[i]为起点的最长不升子序列的长度,和最长不降子序列的长度,两个相加再减去a[i]重复的次数法2:把当前序列复制两个,一个逆序,求总共的最长上升子序列的长度,然后奇偶避免重复原创 2015-05-27 21:04:54 · 589 阅读 · 0 评论