随笔分类 - dp
摘要:dp[i][j]代表在i为根 深度为j时的价值河 所以 dp[i][j]=dp[i 2][j 1]+dp[i 2+1][j 1] 重新标一下号 开始跑转移方程即可 include define inf 0x3f3f3f3f using namespace std; const int maxn=5e
阅读全文
摘要:按降序排序 所以第2个之后的人每次都有2中决策; 1.和1跑过去 2.和他前面一个跑过去 俩这种取最小值即可
阅读全文
摘要:前置技能二进制枚举子集 for(int j=i;j;j=(j-1)&i) 从集合本身开始 每次-1,&i保证最后的结果一定是i的子集(0的位置不会变成1) 及每次都是从左到右消去一个1 思路:二进制枚举这n个人的子集,判断哪几个状态是能够在一辆车上的,然后对于所有状态判断他的哪两个互补的子集能使得这
阅读全文
摘要:完全背包输出路径;对于每一次更新记录一下路径;注意钱币个数; dp[i][0]代表在空间为i时需要多少枚钱币 dp[i][1]用来记录路径 cheek[j]用来记录在j时用了多少i枚钱币 思路在代码中;
阅读全文
摘要:题目大意: 给你一棵树 选一个点既选择了与其相邻的边,求选择最少的点包含全部的边; 思路:入门题:对于每一个节点,选与不选2个状态,如果不选,那么他的子节点必须都要选 dp[u][0] 不选u dp[u][1] 选u;
阅读全文
摘要:题目大意: 给一个n节点的有向无环图,要找一个这样的点,该点到其它n-1要逆转的道路最少; 题解思路: 建边时正边赋值0,反边赋值1;及遍历全图后总权值最小。 跑树形dp; 可以从一个结点可以从fa son得到值; 2遍dfs;
阅读全文
摘要:题目要求:求树上每个点能到达的最远距离 dp[u][0]:u的子树下u的最远距离是多少 dp[u][1]:u的子树次远距离是多少 dp[u][2]:u的父亲能走的最远距离是多少 dp[0] [1]dfs处理即可 如果vi不是u最长距离经过的节点,f[vi][1] = dist(vi,u)+max(f
阅读全文
摘要:1 /** 2 dp 3 1.在dp[n-1]个方法中每个的最后一个上加1 4 2.在dp[n-h]的加一排高度为h; 5 */ 6 7 8 #include 9 #include 10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 18 #defi...
阅读全文
浙公网安备 33010602011771号