动态规划
文章平均质量分 60
SuperSunQ
知人者智,自知者明!胜人者有力,胜己者强!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
背包九讲-01背包
01背包问题朴素思想:#include <iostream>#include <cstring>#include <algorithm>using namespace std;const int N = 1010;int v[N];int w[N];int n, m;int ans[N][N];/*f[i][j] 表示只看前i个物品,总体积是j的情况下,总价值最大是多少result = f[n][0~V]f[i][j] :1、原创 2021-04-08 09:47:14 · 116 阅读 · 0 评论 -
HDU - 3586 Information Disturbing
限制LIMIT,删除不超过LIMIT的边是的叶子节点和根节点不相连接。解题思路:枚举LIMIT,在LIMIT限制下进行计数,枚举使用二分枚举,不过这题数据有bug, LIMIT大部分存在于做区间。可直接循环枚举;AC代码:#include <cstring>#include <cstdio>#include <cstring>#include <ve...原创 2018-05-24 17:10:11 · 201 阅读 · 0 评论 -
POJ - 3140 Contestants Division DFS计数+假树形DP
坑点,long long 不能用absAC代码:#include <cstring>#include <cstdio>#include <cstring>#include <vector>#include <iostream>#include <algorithm>using namespace std;typ...原创 2018-05-24 11:19:01 · 246 阅读 · 0 评论 -
Tree Cutting POJ - 2378 ·树形DP + 计数
题目大意:删除一点之后剩下所有子树的节点个数不超过n/2,问有几个这样的点。AC代码:#include <cstring>#include <cstdio>#include <cstring>#include <vector>#include <iostream>#include <algorithm>using...原创 2018-05-23 22:56:16 · 278 阅读 · 0 评论 -
Super Jumping! Jumping! Jumping! HDU - 1087
解题思路:题意就告诉你要求你经过的点是上升序,让你求最大和;令dp[i]表示以i为结尾的最大上升字段和;转移方程是:dp[i] = max(dp[j] + ac[j], dp[i]) 如果ac[j] < ac[i];有一种转移方式是错误的,: if(ac[i] > ac[j]) { dp[i] = max(dp[j] ...原创 2018-05-16 15:23:54 · 170 阅读 · 0 评论 -
HDU-1003 Max Sum (最大字段和+标记位置)
题意:求解最大字段和并输出起始点,若最大值出现多次,取第一次出现的位置;解题思路:标记位置:如果dp[i-1] >= 0那么,右结点更新,否则更新起点和重点;long long和int 混用导致wa了很多发AC代码:#include <iostream>#include <cstdio>#include <string>#include <ra...原创 2018-05-15 18:51:40 · 294 阅读 · 0 评论 -
折线分割平面-----HDU - 2050 递推+规律
直线分割看交点,交点最多会多出n-1个,那么会多分出 点数+1 个平面。那么折线交点会多 2 * 2 (n - 1),那么平面多 点数+ 1个。。。AC代码:#include <iostream>#include <cstring>using namespace std;typedef long long ll;ll f[100000];int main()...原创 2018-05-14 21:27:23 · 192 阅读 · 0 评论 -
HDU - 2084 数塔
AC代码:#include<stack>#include<queue>#include<cmath>#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define fabs(x) ((x) > 0原创 2018-05-14 18:40:40 · 144 阅读 · 0 评论 -
记忆化搜索+回文串--UVA 10617 Again Palindrome
题目大意:给你一个串,你可以删掉任意个字符使其成为回文串,问有几种方法。解题思路:一开始以为可以用Manacher处理出辅助数组P,在通过组合数得到答案,发现结果不对。比赛结束后得知是记忆化搜索。。。设数组DP[i][j]表示i到j的回文串的种类个数,我们可以得到这样的递推关系:DP[i][j] = DP[i+1][j] + DP[i][j-1] + 1;但是这其中多了一部分就是DP[i+1][j...原创 2018-03-27 09:15:17 · 261 阅读 · 1 评论 -
DP· HDU - 2571 ·命运
题目大意:、、、、中文的,大哥自己看吧求你了。。解题思路:。。。。打扰了。。写了一天博客写不动了,emmDP求解(求从左上角走到右下角的最大值),递推公式为:dp[i][j] = max(dp[i-1][j],dp[i][j-1],dp[i][k]) + data[i][j]。其中dp[i][j]表示男主角到达第i行第j列所能达到的幸运值的最大值。data[i][j]表示第i行第j列的幸运值。其中...原创 2018-03-29 17:49:15 · 142 阅读 · 0 评论 -
水DP·POJ 2385
题意:一开始你在树1下,你可以在树之间来回移动w次,每秒在某棵树下会掉落苹果,你在树下你就能得到,问,t时间内可以得到最多多少苹果;解题思路:dp[i][j]代表i时刻你移动了j次所得到的苹果那么dp[i][j] = max(dp[i-1][j], dp[i-1][j-1])表示在上一秒你移动或不移动得到的最大值再加上:如果这一秒你站在掉苹果的树下,那么这一秒你可以得到一个苹果,dp[i][j] ...原创 2018-03-15 17:47:54 · 143 阅读 · 0 评论 -
DP·UVA-12034·Race
题意:n人赛马最终名次的种类数目除以10056的余数。解题思路:设共有i个人,每个名次有j个人。f[i] = (C[i][j]*f[i-j])的总和;代码:#include <iostream>#include <cstring>using namespace std;#define ms(a,b) memset(a,b,sizeof(a))const int ...原创 2018-02-28 20:46:12 · 199 阅读 · 0 评论 -
DP`UVA-580·Critical Mass
题意:将U,L放入一列长为n的盒子中,要求至少有三个U相连,问有几种方法。解题思路:我们可以用总数减掉不符合题意的即为答案。你多写几种情况就能发现,DP方程为:dp[i] = dp[i-1] + dp[i-2] + dp[i-3];代码:#include <iostream>using namespace std;const int maxn = 40;int dp[maxn...原创 2018-02-28 20:14:05 · 203 阅读 · 0 评论
分享