动态规划
文章平均质量分 52
本该如此
愿你历尽千帆,归来时仍是少年。
展开
-
01背包(DP入门)
n个重量和价值分别为w, v的物品。找出总重量不超过W 的物品,求所有挑选方案中价值总和的最大值。n=4;(w,v)={(2,3),(1,2),(3,4),(2,2)}W=5; 输出:7 (选0号,1号,3号)理解://n个物品 背包容量W //int w[max_n],v[max_n]; weight,value; //暴搜 O(2^n)i...原创 2018-04-07 22:42:38 · 328 阅读 · 0 评论 -
UVA 531 Compromise(LCS路径还原)
In a few months the European Currency Union will become a reality. However, to join the club, the Maastricht criteria must be fulfilled, and this is not a trivial task for the countries (maybe except ...原创 2018-08-09 23:41:18 · 183 阅读 · 0 评论 -
LCS / LIS 基础算法及路径保存
LCS(最长公共子序列,Longest Common Subsequence):已知两个字符串S ,T 求他们的公共子序列:按照白书对于dp数组的定义递推关系如下:dp[ i+1 ][ j+1 ]=dp[ i ][ j ]+1 ( s[i]==t[j] )dp[ i+1 ][ j+1 ]...原创 2018-08-10 01:00:34 · 624 阅读 · 0 评论 -
51nod 1049 (最大字段和)
N个整数组成的序列a11,a22,a33,…,ann,求该序列如aii+ai+1i+1+…+ajj的连续子段和的最大值。当所给的整数均为负数时和为0。例如:-2,11,-4,13,-5,-2,和最大的子段为:11,-4,13。和为20。Input第1行:整数序列的长度N(2 <= N <= 50000)第2 - N + 1行:N个整数(-10^9 <= Aii...原创 2018-08-13 21:53:34 · 180 阅读 · 0 评论 -
A Winged Steed(背包)
描述 有n种千里马,每一种都有若干匹,第ii种马的颜值ai,价格di.现有m个牧马人要去挑选千里马,每一位牧马人对马的颜值都有要求:{所选马的颜值总和}⩾Ai.现在让你来为牧马人做满足要求的最低预算.输入 单组测试数据,第一行两个整数n,m(1≤n,m≤1e4).接下来n行,每行两个整数a1,d1,a2,d2,...an,dn.最后一行m个整数A1,A2...原创 2018-08-13 20:29:39 · 165 阅读 · 0 评论 -
HDU-2546 饭卡(背包)
电子科大本部食堂的饭卡有一种很诡异的设计,即在购买之前判断余额。如果购买一个商品之前,卡上的剩余金额大于或等于5元,就一定可以购买成功(即使购买后卡上余额为负),否则无法购买(即使金额足够)。所以大家都希望尽量使卡上的余额最少。 某天,食堂中有n种菜出售,每种菜可购买一次。已知每种菜的价格以及卡上的余额,问最少可使卡上的余额为多少。 Input ...原创 2018-08-08 13:58:15 · 121 阅读 · 0 评论 -
HDU-1284 钱币兑换问题(dp入门)
钱币兑换问题 Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 12528Accepted Submission(s): 7588 Problem Description 在一个国家仅有1...原创 2018-08-07 15:26:14 · 1046 阅读 · 0 评论 -
HDU-2089不要62(stringsream用法,数位dp)
不要62 Time Limit: 1000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 56640Accepted Submission(s): 22017 Problem Description 杭州人称那些傻乎乎...原创 2018-08-11 20:50:57 · 177 阅读 · 0 评论 -
POJ-1742 Coins (多重背包可行性)
转载自:大神的标准CODE给出硬币面额及每种硬币的个数,求从1到m能凑出面额的个数。Input多组数据,每组数据前两个数字为n,m。n表示硬币种类数,m为最大面额,之后前n个数为每种硬币的面额,后n个数为相应每种硬币的个数。 (n<=100,m<=100000,面额<=100000,每种个数<=1000)OutputRTSample Input...转载 2018-08-10 21:05:54 · 227 阅读 · 0 评论 -
POJ -1088 滑雪(dp)
Michael喜欢滑雪百这并不奇怪, 因为滑雪的确很刺激。可是为了获得速度,滑的区域必须向下倾斜,而且当你滑到坡底,你不得不再次走上坡或者等待升降机来载你。Michael想知道载一个区域中最长的滑坡。区域由一个二维数组给出。数组的每个数字代表点的高度。下面是一个例子 1 2 3 4 516 17 18 19 615 24 25 20 714 23 22 21 813 12 11...原创 2018-08-10 11:32:56 · 169 阅读 · 0 评论 -
HDU2050 折线分割平面(递推)
Problem Description 我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。 Input 输入数据的第一行是一个整数C,表示测试实例的个数,然后是C 行数据,每行包含一个整数n(0<n<...原创 2018-08-06 12:43:09 · 3238 阅读 · 4 评论 -
HDU2041炒鸡阶梯(递推)
Problem Description 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法? Input 输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1<=M<=40),表示楼梯的级数。 Output 对于每个测试实...原创 2018-08-06 11:12:38 · 209 阅读 · 0 评论 -
HDU 2044一只小蜜蜂(递推)
Problem Description有一只经过训练的蜜蜂只能爬向右侧相邻的蜂房,不能反向爬行。请编程计算蜜蜂从蜂房a爬到蜂房b的可能路线数。其中,蜂房的结构如下所示。Input输入数据的第一行是一个整数N,表示测试实例的个数,然后是N 行数据,每行包含两个整数a和b(0<a<b<50)。Output对于每个测试实例,请输出蜜蜂从蜂房...原创 2018-08-06 00:17:19 · 142 阅读 · 0 评论 -
HDU2084数塔(dp最简单的小栗子)
Problem Description在讲述DP算法的时候,一个经典的例子就是数塔问题,它是这样描述的:有如下所示的数塔,要求从顶层走到底层,若每一步只能走到相邻的结点,则经过的结点的数字之和最大是多少?已经告诉你了,这是个DP的题目,你能AC吗? Input输入数据首先包括一个整数C,表示测试实例的个数,每个测试实例的第一行是一个整数N(1 <= N <= ...原创 2018-08-05 23:57:53 · 117 阅读 · 0 评论 -
动态规划
动态规划(英语:Dynamic programming,DP)是一种在数学、计算机科学和经济学中使用的,通过把原问题分解为相对简单的子问题的方式求解复杂问题的方法。 动态规划常常适用于有重叠子问题和最优子结构性质的问题,动态规划方法所耗时间往往远少于朴素解法。动态规划背后的基本思想非常简单。大致上,若要解一个给定问题,我们需要解其不同部分(即子问题),再合并子问题的解以得出原问题的解。 通常许...转载 2018-08-05 23:45:24 · 816 阅读 · 0 评论 -
51Nod-1118 机器人走方格(基础dp)
1118 机器人走方格基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题M * N的方格,一个机器人从左上走到右下,只能向右或向下走。有多少种不同的走法?由于方法数量可能很大,只需要输出Mod 10^9 + 7的结果。Input第1行,2个数M,N,中间用空格隔开。(2 <= m,n <= 1000)Output输出走法的数量...原创 2018-05-28 11:17:05 · 204 阅读 · 0 评论 -
ZOJ - 3872 Beauty of Array (dp)
Edward has an arrayAwithNintegers. He defines the beauty of an array as the summation of all distinct integers in the array. Now Edward wants to know the summation of the beauty of all contiguo...原创 2018-04-29 19:18:18 · 156 阅读 · 0 评论 -
完全背包(DP入门)
n种重量和价值分别为w,v的物品。从中选出总重量不超过W的物品,每种可以挑选多件。求挑出物品价值总和的最大值。#include<bits/stdc++.h> using namespace std;const int MAX_N=10000;int n,W; int w[MAX_N],v[MAX_N];int dp[MAX_N+1];void solve(){ for(i...原创 2018-04-07 22:46:12 · 818 阅读 · 0 评论 -
Wagner Fischer算法(字符串编辑距离,Edit Distance)
字符串编辑距离裸题题目描述 :点击转到网址设A和B是两个字符串。我们要用最少的字符操作次数,将字符串A转换为字符串B。这里所说的字符操作共有三种:1. 删除一个字符;2. 插入一个字符;3. 将一个字符改为另一个字符。对任给的两个字符串A和B,计算出将字符串A变换为字符串B所用的最少字符操作次数。输入第一行为字符串A;第二行为字符串B;字符串A和B的长度均小于200...原创 2019-04-12 00:16:20 · 1139 阅读 · 1 评论