
基础dp
stormjing7
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HDU-5532 Almost Sorted Array (最长上升子序列 or 模拟)
传送门Almost Sorted ArrayTime Limit: 4000/2000 MS (Java/Others)Memory Limit: 262144/262144 K (Java/Others)Total Submission(s): 7512Accepted Submission(s): 1763Problem Description...原创 2018-07-15 10:45:30 · 238 阅读 · 0 评论 -
HDU 6447 YJJ's Salesman(树状数组优化DP + 离散化)
HDU 6447 YJJ’s Salesman题目给一个二维数组,从(0,0)走到(1e9, 1e9)。每次只能走右,下,右下,三个方向。其中只有通过右下走到特定给出的点(村庄)时才会获得分值。问最后走到终点最大分值。分析很明显的 DP 题目。状态转移题目都给出了。但是 1e9 很明显会爆。想一下,题目让求最大分值,而最大分值只与特定的点有关。也就是说数组的列上如果没有村庄怎么走都没关系...原创 2019-08-21 18:05:40 · 268 阅读 · 0 评论 -
Gym - 102021C Coolest Ski Route(DAG 上动态规划模板题)
Gym - 102021C Coolest Ski Route题目给一个有向无环图,求最长路。分析dp[i]dp[i]dp[i] 表示从 iii 节点开始的最长路。从 nnn 个点分别记忆化搜索即可。#include <bits/stdc++.h>using namespace std;#define ll long long #define INF 0x3f3f3f...原创 2019-08-15 22:02:52 · 265 阅读 · 0 评论 -
ACM-ICPC 2018 徐州赛区网络预赛 F. Features Track(模拟 || dp)
ACM-ICPC 2018 徐州赛区网络预赛 F. Features Track题目有 n 天,每天有一定量的点对,求点对连续出现最长的天数。分析两种方法,用 pairpairpair 存点对,直接枚举每一天的每一个点对能往后连续多少天,连续的后面要标记一下,下次枚举后面的天,不枚举标记过的点对。或者将点对用 mapmapmap 映射成数字,然后动态规划。dp[i][j]dp[i][...原创 2019-08-15 21:54:48 · 272 阅读 · 0 评论 -
计蒜客信息学7月普及组模拟赛 - C 收获(逆向DP)
计蒜客信息学7月普及组模拟赛 - C 收获题目有 n 个地点,每个点有可能是果树或者亭子。初始有一个兴奋度 w,经过果树可以选择“收获” 一次,收获值为当前兴奋度 w∗a[i]w * a[i]w∗a[i],但是兴奋度会下降 k%k\%k%;经过亭子可以选择放弃 w∗a[i]w*a[i]w∗a[i] 的收获值,但是兴奋度会上升 c%c\%c%。问从 1 走到 n,能获得最大收获值?分析代码...原创 2019-07-13 17:59:44 · 605 阅读 · 0 评论 -
UVA - 116 Unidirectional TSP(单向旅行商问题)
UVA - 116 Unidirectional TSP题目给m行n列矩阵,从第一列任意位置开始向右走,每次走三个方向,走到最后一列最小权值是多少,并打印路径列号。分析每次三个决策,即三个方向,直接构建状态转移方程。注意字典序最小和打印路径的问题。#include <bits/stdc++.h>using namespace std;typedef long long...原创 2019-06-04 20:37:58 · 354 阅读 · 0 评论 -
UVA - 1347 Tour(双调旅行商问题)
UVA - 1347 Tour题目旅行商问题描述:平面上n个点,确定一条连接各点的最短闭合旅程。题目按照x递增顺序给出,各点x不同。分析动态规划题目说从最左端走到最右端,再返回最左端。可以想象成两个人同时从最左端沿着两条不同路径走到最右端,保证每个点走到一次,则他们两个的路径相加最短就是答案。最难的就是定义状态,状态定义的好坏直接影响题目的解决将题目给出的点按 x 大小编号 1 ...原创 2019-06-04 12:32:10 · 551 阅读 · 0 评论 -
UVA-1025 A Spy in the Metro(多决策dp)
uva-1025 A Spy in the Metro题目某城市的地铁是线性的,有n(2≤n≤50)个车站,从左到右编号为1~n。有M1辆列车从第1站开始往右开,还有M2辆列车从第n站开始往左开。在时刻0,Mario从第1站出发,目的是在时刻T(0≤T≤200)会见车站n的一个间谍。在车站等车时容易被抓,所以她决定尽量躲在开动的火车上,让在车站等待的总时间尽量短。列车靠站停车时间忽略不计,且M...原创 2019-05-29 22:44:33 · 187 阅读 · 0 评论 -
1051 最大子矩阵和(dp)
1051 最大子矩阵和题目分析这题用 n3n^3n3的复杂度过的,很暴力。对于大矩形,枚举左右边界,之后转化为最大字段和做。例:1 2 34 5 67 8 9枚举左右边界为:1, 2就变为求 3, 9, 15 的最大字段和#include <bits/stdc++.h>#define INF 0x3f3f3f3f#define d(x) cout <&...原创 2019-05-27 22:41:26 · 212 阅读 · 0 评论 -
51nod 1002 数塔取数问题
题目求从第一层走到最低一层经过权值最大多少分析状态转移:dp[i][j] += max(dp[i-1][j], dp[i-1][j-1]可以用一个pre数组存一下dp[i-1][j-1],空间优化。#include <bits/stdc++.h>#pragma GCC diagnostic error "-std=c++11"#define d(x) cout <&...原创 2019-05-13 19:56:32 · 162 阅读 · 0 评论 -
最小编辑距离
51nod1183编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。例如将kitten一字转成sitting:sitten (k->s)sittin (e->i)sitting (->g)所以kitten和si...原创 2019-04-26 22:12:41 · 347 阅读 · 0 评论 -
51nod 1134 最长递增子序列
分析:LIS模板题,注意要用nlog(n)nlog(n)nlog(n)的dp,即dp[i]代表长度为i的LIS序列最小结尾值。#include <bits/stdc++.h>#define INF 0x3f3f3f3f#define d(x) cout << (x) << endl#pragma GCC diagnostic error "-std=c...原创 2019-04-25 20:04:44 · 201 阅读 · 0 评论 -
HDU - 1069 Monkey and Banana(LIS变形)
题意:给你n种长方体,每种长方体有三个参数长宽高,每种数量不限,现在让你将长方体摞一块,要满足上方长方体的长和宽严格小于下方的,求最大高度。分析:这道题其实就是最长递增子序列LIS的变形,首先将同一个长方体不同摆放视为不同的,也就是一个长方体有6种方式,之后按长宽排序,接着就是求LIS的模板了,只要将递增改为递减即可,注意状态 转移方程:dp[i]=max(dp[i],dp[j]+blo...原创 2019-04-09 21:19:01 · 288 阅读 · 0 评论 -
HDU - 1024最大m段字段和
题意:给你n个数,选m个子段,各个子段连续且不相交,长度可以为1,设maxn为各个子区间的和,求最大的maxn。分析:设dp[i][j]代表 j个数选取 i 个子段 ,maxn最大的值;得状态转移方程dp[i][j]=max(dp[i][j−1],dp[i][j−1]+a[j],dp[i−1][k]+a[j](0<k<j)dp[i][j] = max(...原创 2019-04-09 15:15:35 · 435 阅读 · 0 评论 -
51nod1006最长公共子序列LCS
输出路径的过程结合dp数组和代码一看就懂了 a b d k s c a ba 1 1 1 1 1 1 1 1 b 1 2 2 2 2 2 2 2 c 1 2 2 2 2 3 3 3 i 1 2 2 2 2 3 3 3 c 1 2 2 2 2 3 3 3 b 1 2 2 2 2 3 3 4 a 1 2 2 2 2 3 4 4 经典的dp题,关键题目让输出最后的公共序列,可以...原创 2019-04-05 22:30:43 · 267 阅读 · 0 评论 -
51nod 1049 最大子段和
1049最大子段和基准时间限制:1秒 空间限制:131072KB 分值:0难度:基础题收藏关注N个整数组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的连续子段和的最大值。当所给的整数均为负数时和为0。例如:-2,11,-4,13,-5,-2,和最大的子段为:11,-4,13。和为20。Input&l...原创 2018-10-15 22:03:53 · 158 阅读 · 0 评论 -
51nod-1007正整数分组(简单dp)
传送门1007 正整数分组基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注将一堆正整数分为2组,要求2组的和相差最小。例如:1 2 3 4 5,将1 2 4分为1组,3 5分为1组,两组和相差1,是所有方案中相差最少的。Input第1行:一个数N,N为正整数的数量。第2 - N+1行,N个正整数。(N &amp;amp;lt;= 100, 所有正整数...原创 2018-10-23 21:41:11 · 310 阅读 · 0 评论 -
SPOJ AMR11A Magic Grid(dp)
题目链接 : http://www.spoj.com/problems/AMR11A/题目大意:给出一个r * c大小的方格二维图,走到每个方格上需要加上上面的值,从左上角开始走,规定只能往下右两个方向,要求全程值都大于零,求最开始最小值。分析:倒着dp,开一个二维数组dp[r][c],dp[i][j]表示走到i, j位置所需最小值,可以得到初等关系:...原创 2018-07-09 20:37:50 · 306 阅读 · 0 评论 -
The Preliminary Contest for ICPC Asia Shanghai 2019 F. Rhyme scheme (DP + int128)
The Preliminary Contest for ICPC Asia Shanghai 2019 F. Rhyme scheme题目题意很绕,其实大致就是给你 n 个数,让你划分集合,例如 n = 3;集合划分为 :(一共有 5 种)分析代码...原创 2019-09-16 16:27:19 · 904 阅读 · 0 评论