![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
动态规划
文章平均质量分 76
KinderRiven
这个作者很懒,什么都没留下…
展开
-
History Grading -uva
这个题据说是动归、、、不过我没学过啊原创 2014-04-13 07:02:15 · 534 阅读 · 0 评论 -
【UVA】10285-Longest Run on a Snowboard(动态规划)
动态规划习题原创 2014-08-07 19:45:05 · 769 阅读 · 0 评论 -
【UVA】10534 - Wavio Sequence(LIS最长上升子序列)
这题一看10000的数据量就知道必须用nlog(n)的时间复杂度。所以特意去看了最长上升子序列的nlog(n)的算法。如果有2个位置,该位置上的元素为A[i]和A[j],并且他们满足以下条件:1.dp[i] = dp[j] (dp[x]代表以x结尾的最长上升子序列长度)2.A[i] 3.i 那么毫无疑问,选择dp[i] 一定优于选择dp[j]那么我们可以利用g[i原创 2014-09-06 22:17:47 · 679 阅读 · 0 评论 -
[UVA]10465 - Homer Simpson(完全背包问题)
完全背包问题,xian原创 2014-09-03 00:36:59 · 527 阅读 · 0 评论 -
【UVA】10404-Bachet's Game(动态规划)
如果d[i]是必胜态,那么d[i + V[j]]一定是必败态,反之亦然。用d[i]代表棋子为i个是否为必胜态。边界条件是d[i] = 1;1413929110404Bachet's GameAcceptedC++0.6622014-09-03 09:44:48#include#include原创 2014-09-03 17:51:39 · 818 阅读 · 0 评论 -
【UVA】10651-Pebble Solitaire(直接递归或者记忆化)
动态规划原创 2014-09-04 17:18:08 · 764 阅读 · 0 评论 -
【UVA】108 - Maximum Sum(DP矩阵)
n^3的复杂度计算最小子矩阵,用了最大连续和的DP算法。14273282108Maximum SumAcceptedC++0.0132014-09-27 #include#include#includeusing namespace std;const int INF = 1 << 30;co原创 2014-09-27 21:01:52 · 758 阅读 · 0 评论 -
【HDU】The Ghost Blows Light(树状DP)
大体思路:先求出1 ~原创 2014-09-28 15:38:16 · 546 阅读 · 0 评论 -
【uva-11584】Partitioning by Palindromes(dp)
粗略的复杂度是L^3,长度最大是1000,,没敢做,之后发现其实这个复杂度的系数也不大,可以过,而且很快。dp[j] = dp[i - 1] + 1 (if(str[i] ~ str[j]为回文)1432745111584Partitioning by PalindromesAcceptedC++0.0522014-10-原创 2014-10-09 17:37:38 · 902 阅读 · 0 评论 -
【UVA】11137-Ingenuous Cubrency
DP问题,需要打表。dp[i][j]代表利用大小不超过i的数字组成j的方法。状态方程是 dp[i][j] = d[i - 1][j] + sum{dp[i - 1][j - k * i * i *i]};1432770511137Ingenuous CubrencyAcceptedC++0.0492014-10-09原创 2014-10-09 18:21:14 · 751 阅读 · 0 评论 -
【HDU】1520-Anniversary party(初级树形DP)
不是什么难题,但也算自己写的第一个树形DP,留个纪念吧= =状态方程(dp[0][i]代表不选i人参加聚会时候的最大值,dp[1][i]代表选)dp[0][pos] = max(dp[0][pos],max(dp[0][e] + dp[0][pos],dp[1][e] + dp[0][pos]));dp[1][pos] = max(dp[1][pos],dp[1][pos] + dp[0原创 2015-04-02 20:32:26 · 610 阅读 · 0 评论 -
【USACO】Cow Pedigrees(DP)
dp[i][j]代表总结点数为i的,高度不超过j的树的种类dp[i][j] += dp[k][j] * dp[i - k - 1][j];注意取余的情况结果为 dp[n][k] - dp[n][k - 1]/*ID: 18906421LANG: C++PROG: nocows*/#includeusing namespace std;const int maxn =原创 2015-04-21 10:34:27 · 681 阅读 · 0 评论 -
【POJ 3666】Making the Grade(简单DP)
首先可以明确一个方面,那就是如果将X改成Y,那么Y肯定是这N个数中的某一个(为什么仔细想想)之后可以得到一个状态转移那就是dp[i][j]代表已经考虑了i位的情况下,结尾为j的最小更改数。状态转移为dp[i][j] = min(dp[i-1][k] + abs(a[i] - b[j])) 这样的话可以写出一个初步的代码:#include#include#includeusing原创 2015-05-12 21:47:50 · 1769 阅读 · 0 评论 -
【HDU】 1160 FatMouse's Speed (DP)
一开始写的dfs进行记忆化结果不知道怎么进行路径的记录。。。改成循环就好了dp[i] = max(dp[j]) + 1 , weight[j] speed[i]一开始进行一次排序使得重量递增,这样只需要考虑速度就好了#include#includeusing namespace std;const int maxn = 10005;struct Mouse{ int原创 2015-05-17 11:05:45 · 592 阅读 · 0 评论 -
【HDU】5256 序列变换(最长上升子序列变形)
如果a[i]和a[j]想不变,需要满足的条件就是a[j] - a[i] > j - i也就是a[i] - i 比如1 4 2 就不满足,所以1和2之间一定有一个需要改变所以我们对所有a[i] - i求其最长上升子序列就可以了#include#include#includeusing namespace std;const int maxn = 100005;con原创 2015-06-03 22:29:02 · 828 阅读 · 0 评论 -
【UVA】10739 - String to Palindrome(动态规划)
比较水的动态规划dp[i][j] 将原串 i ~ j 之内的字符转化为回文字符所需要的最小操作次数其中删除操作和添加操作本质上是一样的。三个状态转移方程:dp[i][j] = min(dp[i][j] ,dp[i + 1][j]);dp[i][j] = min(dp[i][j] ,dp[i + 1][j - 1]);dp[i][j] = min(dp[i][j] ,dp原创 2014-09-04 18:09:17 · 742 阅读 · 0 评论 -
【UVA】348-Optimal Array Multiplication Sequence(矩阵链乘)
最基本的矩阵链乘。一开始打错一个字母WA了N次,原创 2014-08-06 18:34:43 · 475 阅读 · 0 评论 -
1025-A Spy in the Metro
动态规划。。照着书推得,下周开动规#include#include#include#include#include#include#include#include#include#includetypedef long long LL;#define MAXD 100 + 10#define INF (1 << 30)using namespace std;int原创 2014-07-26 18:50:26 · 543 阅读 · 0 评论 -
国际象棋问题(动态规划)
问题描述:国际象棋中的车可以水平的或竖直的移动,一个车要从一个棋盘的一角移到对角线的另一角,有多少种最短路径?原创 2014-08-04 10:18:20 · 3497 阅读 · 0 评论 -
【UVA】10003-Cutting Sticks(动态规划、矩阵链乘)
一到动态规划提,不过似乎ke原创 2014-08-04 19:06:11 · 588 阅读 · 0 评论 -
【UVA】11584-Partitioning by Palindromes(动态规划)
动态规划。dp[i] =原创 2014-08-05 16:32:31 · 491 阅读 · 0 评论 -
【UVA】11400-Lighting System Design(动态规划)
这道题感觉状态式不是很好推。。。 WA原创 2014-08-05 15:26:02 · 492 阅读 · 0 评论 -
437 - The Tower of Babylon(动态规划)
这题感觉比较水了,只不过建立模型的时候需要想一下,给n个zhengfangtri原创 2014-08-04 21:44:58 · 470 阅读 · 0 评论 -
【uva】116-Unidirectional TSP(动态规划,路径问题)
一道很基础的don原创 2014-08-05 10:16:17 · 534 阅读 · 0 评论 -
【UVA】10130-SuperSale(01背包)
东西有无限个,那就是赤裸裸的01背包了,没什么好说的,多几个人加一起就行了,第一次直接枚举0~50的背包状态,zh原创 2014-08-06 22:30:02 · 577 阅读 · 0 评论 -
【UVA】12186-Another Crisis(动态规划)
算是比较水的题吧,不过y原创 2014-08-07 10:25:04 · 644 阅读 · 0 评论 -
【UVA】624-CD(动态规划01背包问题)
看了一下0/1背包问题,01背包,说白了就是选和不选的原创 2014-08-06 20:23:59 · 723 阅读 · 0 评论 -
【UVA】531-Compromise(最长公共子串)
最长公共子串的问题,只不过单位从字符编程字符原创 2014-08-06 23:07:36 · 601 阅读 · 0 评论 -
【UVA】821-Page Hopping(Floyd)
模板题,求一个点到任何一点的距离,用Floyd就行了,结点不一定是从1 ~ n 的,所以需要记录结点的id14063895821Page HoppingAcceptedC++0.1192014-08-19 10:00:27#include#include#include#include#includ原创 2014-08-19 18:00:51 · 1146 阅读 · 0 评论 -
【UVA】1220-Party at Hali-Bula?(动态规划,树)
刚开始学树上的动规,感觉还是比较吃力,照着书上的思路敲出来了。状态转移的话需要对每个结点定义2个状态dp[i][0]和dp[i][1]分别代表不选择i结点和选择i结点的情况下的最大人数。这样的话,如果选择了i,也就是dp[i][1]的时候,他只能加上他儿子的儿子,也就是孙子。dp[i][1] = sum{dp[son][0]}; 如果不选择i的话,他就有2个选择了dp[i][原创 2014-08-07 12:12:29 · 518 阅读 · 0 评论 -
【UVA】1218 - Perfect Service(动态规划)
好纠结的一道题,如果不按书上的思路来根本想不ch原创 2014-08-07 18:44:18 · 1306 阅读 · 3 评论 -
【HDU 4122】RMQ
这道题暴力竟然比标程跑的快!!!!在这里RMQ维护的是一段区间内最小代价的下标。另外就是注意一下 求某两天之间有多少天的函数怎么写。感觉这道题没做出来一个是题没读懂,第二个就是不敢去暴,第三个就是对一些问题的转化不够。#include#include#include#include#include#include#includeusing namespace std;原创 2015-08-07 21:15:59 · 689 阅读 · 0 评论