算法-动态规划
文章平均质量分 58
动态规划
Wonder-King
有好奇心,什么都想学一点。
展开
-
HRBUST 1818/1819 石子合并问题--直线版 /圆形版(经典动态规划)
石子合并问题(直线版)一条直线上摆放着一行共n堆的石子。现要将石子有序地合并成一堆。规定每次只能选相邻的两堆合并成新的一堆,并将新的一堆石子数记为该次合并的得分。请编辑计算出将n堆石子合并成一堆的最小得分和将n堆石子合并成一堆的最大得分。Input输入有多组测试数据。每组第一行为n(n<=100),表示有n堆石子,。二行为n个用空格隔开的整数,依次表示这n堆石子的石子数量...原创 2018-07-28 20:03:38 · 704 阅读 · 0 评论 -
HDU Bridging signals(LIS模板)
题目大意给出一个序列,找出最长非递减子序列,输出其长度。AC代码#include<iostream>#include<algorithm>#include<cstring>using namespace std;const int Max=40005;int main(){ int N; cin>>N; while(...原创 2019-03-23 18:11:34 · 153 阅读 · 0 评论 -
51Nod 1051最大子矩阵和
1051 最大子矩阵和2 秒 131,072 KB 40 分 基础题 4 级题 难题一个M*N的矩阵,找到此矩阵的一个子矩阵,并且这个子矩阵的元素的和是最大的,输出这个最大的值。例如:3*3的矩阵:-1 3 -12 -1 3-3 1 2和最大的子矩阵是:3 -1-1 31 2一个M*N的矩阵,找到此矩阵的一个子矩阵,并且这个子矩阵的元素的和是最大的,输出这个最大的值。例如:...原创 2019-02-28 09:03:18 · 361 阅读 · 0 评论 -
51Nod1043 幸运号码(动归数位dp)
我们用dp[i][j]表示的是前i位的数字和为j,j最大为9*i ,前i位每位都是9的时候。 这样假如我们求得了dp[n][1]一直到dp[n][9*n]的数字,那么最终结果就是dp[n][1] * dp[n][1] + ... + dp[n][9*n] * dp[n][9*n] . 但是这里还有一个问题就是,dp[i][j] 表示的是前i位的数字和为j,但是我们知道前面的那个 i...原创 2018-12-22 11:04:26 · 243 阅读 · 0 评论 -
51nod1021 石子归并(动态规划)
简单模板题#include<iostream>#include<algorithm>#include<cmath>#include<cstring>using namespace std;const int INF=1e9+7;int dp[1005][1005],num[1005];int main(){ int n; c...原创 2018-12-20 14:08:01 · 223 阅读 · 0 评论 -
51Nod1092 回文字符串(LCS)
这道题我现在还很迷,只知道把字符串逆序,然后求两个字符串的LCS,最后字符串的长度减去公共子串长度,就是答案。但是为什么是这样呢?我很迷啊。。。。。。。。。。。。。。。who can tell me?#include<iostream>#include<algorithm>#include<cstring>#include<string>...原创 2018-12-02 10:13:13 · 217 阅读 · 0 评论 -
51Nod1087 1 10 100 1000(dp)
这是一道很简单的动态规划题,用dp[i]存下所以1出现的下标,然后用二分查找,如果能在dp中找到,就说明是1。#include<iostream>#include<cstring>#include<algorithm>using namespace std;long long dp[100000];int Find(int x){ int ...原创 2018-11-17 15:57:54 · 193 阅读 · 0 评论 -
51Nod1083 矩阵取数问题(动态规划)
思路就是动态规划。dp[i][j]表示(0,0)到(i,j)的最大价值。可以思考一下,dp[i][j]的值取决于谁。因为只能向下向右走,所以它的值取决于它的上面和左面的dp值,so,dp[i][j]=max(dp[i-1][j],dp[i][j-1])+map[i][j] #include<iostream>#include<cstring>#inclu...原创 2018-11-17 15:35:39 · 252 阅读 · 0 评论 -
51Nod1050 循环数组最大子段和(动态规划)
这题区间是可以循环的,如果不循环的状态转移方程是if(dp[i-1]>0) dp[i]=dp[i-1]+a[i];else dp[i]=a[i];现在题目要求是可以循环,分为两种情况:1、没有循环,找到了最大的子段。2、循环了,找到了最大的子段。第一种情况很简单,第二种解决方法就是找到最小的子段,数组和减去最小子段和,就是最大循环子段和。#include...原创 2018-11-22 19:28:11 · 418 阅读 · 0 评论 -
51Nod1007 正整数分组(01背包)
这道题思路就是算出数组总和,在数组中找到和最接近数组总和一半的一些数。可以用01背包解决这道题,dp[i][j]表示在数组前i项中最接近j的最大值。状态转移方程为:dp[i][j]=max(dp[i-1][j],dp[i-1][j-a[i]]+a[i]);#include<iostream>#include<algorithm>#include<cs...原创 2018-11-18 17:02:11 · 149 阅读 · 0 评论 -
51Nod1183 编辑距离(最长公共子序列变形)
#include<iostream>#include<string>#include<algorithm>using namespace std;int dp[1001][1001]={0};int main(){ string a,b; cin>>a>>b; int i,j; for(i=0;i<=a.len...原创 2018-11-06 20:44:34 · 162 阅读 · 0 评论 -
51Nod1085 背包问题 (01背包)
01背包,dp[i][j]表示在前i个物品中挑选放进容量为j的背包里的最大价值。#include<iostream>#include<cstring>#include<algorithm>#include<cstdio>#include<cmath>struct thing{ int w,p;}a[10001];in...原创 2018-10-22 13:18:55 · 244 阅读 · 0 评论 -
51Nod基础题1118 机器人走方格(dp)
M * N的方格,一个机器人从左上走到右下,只能向右或向下走。有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果。Input第1行,2个数M,N,中间用空格隔开。(2 <= m,n <= 1000)Output输出走法的数量。Input示例2 3Output示例3题解:很简单的dp题,dp[i][j]=dp[i...原创 2018-10-13 10:25:12 · 218 阅读 · 0 评论 -
2017蓝桥杯 包子凑数(递推,数学思想)
包子凑数小明几乎每天早晨都会在一家包子铺吃早餐。他发现这家包子铺有N种蒸笼,其中第i种蒸笼恰好能放Ai个包子。每种蒸笼都有非常多笼,可以认为是无限笼。每当有顾客想买X个包子,卖包子的大叔就会迅速选出若干笼包子来,使得这若干笼中恰好一共有X个包子。比如一共有3种蒸笼,分别能放3、4和5个包子。当顾客想买11个包子时,大叔就会选2笼3个的再加1笼5个的(也可能选出1笼3个的再加2笼4个的)。...原创 2018-07-31 21:07:05 · 10776 阅读 · 19 评论 -
POJ 1088 滑雪(动态规划)(记忆化搜索)
滑雪Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 1...原创 2018-07-26 21:05:23 · 411 阅读 · 0 评论 -
HDU1114 Piggy-Bank (完全背包)
Piggy-BankBefore ACM can do anything, a budget must be prepared and the necessary financial support obtained. The main income for this action comes from Irreversibly Bound Money (IBM). The idea behi...原创 2018-07-26 20:41:29 · 234 阅读 · 0 评论 -
HDU 2844 Coins (多重背包)
CoinsWhuacmers use coins.They have coins of value A1,A2,A3...An Silverland dollar. One day Hibix opened purse and found there were some coins. He decided to buy a very nice watch in a nearby shop. H...原创 2018-07-28 20:49:54 · 266 阅读 · 0 评论 -
51Nod 1006 最长公共子序列Lcs(动态规划)
最长公共子序列Lcs给出两个字符串A B,求A与B的最长公共子序列(子序列不要求是连续的)。比如两个串为: abcicbaabdkscab ab是两个串的子序列,abc也是,abca也是,其中abca是这两个字符串最长的子序列。Input第1行:字符串A第2行:字符串B(A,B的长度 <= 1000)Output输出最长的子序列,如果有多个,随...原创 2018-07-28 20:28:16 · 274 阅读 · 0 评论 -
山区修路
题目描述SNJ位于HB省西部一片群峰耸立的高大山地,横亘于A江、B水之间,方圆数千平方公里,相传上古的神医在此搭架上山采药而得名。景区山峰均在海拔3000米以上,堪称"华中屋脊"。SNJ是以秀绿的亚高山自然风光,多样的动植物种,人与自然和谐共存为主题的森林生态区。SNJ处于中国地势第二阶梯的东部边缘,由大巴山脉东延的余脉组成中高山地貌,区内山体高大,高低不平。 交通十分不便。最近,HB...原创 2019-04-14 17:51:22 · 290 阅读 · 0 评论