
动态规划——经典题例
XerxesSimon
折柳为笔..月光为笺..画下你月华般的容颜.. 烟染三月..提诗两行..刻下我如梦般的臆想..
展开
-
插头dp
插头DP小结?因为独立插头还有最小表示法没有打过,独立插头没看懂,广义路径连看都没看过,所以这些不再本文的总结范围内。去年学插头DP的时候还是很惧怕的,也只做了一题,还是按着课件对着标程打的。还好今年终于懂得原理了。其实打多了也变成模板了(当然每题的转移不一样)。插头DP有下面的分类:按模型:多回路问题、单回路问题、简单路径问题、广义路径问题按表示方法:是否有插头、括号法(原创 2017-05-24 16:48:38 · 791 阅读 · 0 评论 -
树型dp
树型动态规划 树本身就是一个递归的结构,所以在树上进行动态规划或者递推是最合适不过的事情。 必要条件:子树之间不可以相互干扰,如果本来是相互干扰的,那么我们必须添加变量使得他们不相互干扰。Party at Hali-Bula 题目大意:n个人形成一个关系树,每个节点代表一个人,节点的根表示这个人的唯一的直接上司,只有根没有上司。要求选取一部原创 2016-04-09 15:54:47 · 498 阅读 · 0 评论 -
LCA最近公共祖先(RMQ、Tarjan)
今天学LCA,先照一个模板学习代码,给一个离线算法,主要方法是并查集加上递归思想。http://poj.org/problem?id=1330再搞,第一个离线算法是比较常用了,基本离线都用这种方法了,复杂度O(n+q)。通过递归思想和并查集来寻找最近公共祖先,自己模拟下过程就可以理解了。 然后就是在线算法,在线算法方法就很多了,比较常用的是LCA的RMQ转换,然原创 2016-07-11 12:51:27 · 425 阅读 · 0 评论 -
区间dp
http://acm.nyist.net/JudgeOnline/problem.php?pid=304#include #include #include #include #include #include #include #include #include #include #define B(x) (1<<(x)) using namesp原创 2016-04-09 16:47:31 · 525 阅读 · 0 评论 -
LIS(最长上升子序列长度)
https://vijos.org/p/1028#include#include#include#includeusing namespace std;#define logic(a,b) (strstr((a),(b)) == (a))char s[2001][75];int main(){ int n; cin>>n; for (int i = 0;原创 2016-04-08 14:48:21 · 1175 阅读 · 0 评论 -
LCS(求出最长公共子序列长度)
简单例题:https://vijos.org/p/1111AC代码:#include//c++#include//数学公式#include//malloc#include#include#include//输入输出#include//快排#include//队列#include//优先队列#include//栈#include//容器#include//地图 i原创 2016-03-30 15:27:33 · 658 阅读 · 0 评论 -
背包dp
第一讲:01背包#include#includeint main(){ int dp[1000],w[100],c[100]; int i,j,n,v; memset(dp,0,sizeof(dp)); scanf("%d%d",&n,&v); for(i=0;i<n;i++) scanf("%d%d",&w[i],&c[i]); for(i=0;i<n;i++)//第i原创 2016-04-16 11:36:05 · 347 阅读 · 0 评论 -
线性dp
http://acm.hdu.edu.cn/showproblem.php?pid=4826解题思路:不难想的递推,dp[i][j][0]从上面过来的情况,dp[i][j][1]从下面过来的情况,然后这两种情况都可以从前一列走过来。#include #include #include using namespace std;const int N = 105;const i原创 2016-04-14 22:25:08 · 657 阅读 · 0 评论 -
状压dp
状态压缩动态规划 动态规划的状态有时候比较难,不容易表示出来,需要用一些编码技术,把状态压缩的用简单的方式表示出来。典型方式:当需要表示一个集合有哪些元素时,往往利用2进制用一个整数表示。 *:一般有个数据 n *:确定了为状态DP,那么第一步就是预处理,求出每行所有可能的状态了,cnt记录总的状态数,stk[]记录所有的可能状态。以炮兵阵地为例:原创 2016-04-09 15:59:06 · 329 阅读 · 0 评论 -
数位dp
讲解:http://blog.youkuaiyun.com/niuox/article/details/9864199https://www.bnuoj.com/v3/problem_show.php?pid=52325#includeusing namespace std;typedef long long ll;//位数 数字 关系ll f[20][10][5],sum[20],g[原创 2017-03-29 10:26:20 · 965 阅读 · 0 评论