
基础线性dp(背包,序列问题)
GocNeverGiveUp
这个作者很懒,什么都没留下…
展开
-
HDU 1029 (dp水题)
B - Ignatius and the Princess IVHDU - 1029"OK, you are not too bad, em... But you can never pass the next test." feng5166 says."I will tell you an odd number N, and then N integers. There原创 2018-01-15 19:08:38 · 427 阅读 · 2 评论 -
HDU 1003 (水dp)
HDU - 1003决策失误,做这题的时候慌了,当时分析出来了符合条件的数列的第一项一定是一个非负数,然后就开始发慌,虽然不知道为什么但就是慌的一匹,其实已经分析出来了啊,把之前的非负数都整合成一项就行了,看了别人的代码才敢做,发现自己真的不自信。。。很无奈#include<iostream>#include<cstring>...原创 2018-04-21 21:14:27 · 121 阅读 · 0 评论 -
SDNUOJ 1172.Queue(双向dp)
SDNUOJ 1172这道题一开始思路就是把线段分成两半,左边求上升右边求下降,然后果断wa,因为没有好好读题,上升子序列最后一位必须是下降子序列第一位,这就很难受了,但是仔细分析一下不难发现,dp[i]表达的是以a[i]结尾的最长子序列例如:求 1 3 2 4 5 的最长上升子序列模拟dp过程应该有dp[1] = 1, dp[2] = 2, dp[3] = 2, dp[4] = 3, dp[5]...原创 2018-04-25 21:03:30 · 247 阅读 · 0 评论 -
SDNU 1044 花瓶插花(DP)
花瓶插花题目链接 1044.花瓶插花Time Limit: 1000 MS Memory Limit: 32768 KBTotal Submission(s): 270 Accepted Submission(s): 30Description有m朵花和n个花瓶,要把这些花全部插入某些花瓶中,花瓶和花都是有序的,花在花瓶中的先后顺序必须与给定顺序相同,每朵花插入每...原创 2018-07-25 20:12:11 · 805 阅读 · 2 评论 -
动态规划
任何思想方法都有一定的局限性,超出了特定条件,它就失去了作用。同样,动态规划也并不是万能的。适用动态规划的问题必须满足最优化原理和无后效性。1.最优化原理(最优子结构性质) 最优化原理可这样阐述:一个最优化策略具有这样的性质,不论过去状态和决策如何,对前面的决策所形成的状态而言,余下的诸决策必须构成最优策略。简而言之,一个最优化策略的子策略总是最优的。一个问题满足最优化原理又称其具有最优子结构...原创 2018-08-01 16:48:48 · 403 阅读 · 0 评论 -
SDNUOJ 1038 收集宝藏(递推DP)
今天再看这道题有了新的感触,这道题的状态转移方程究竟是如何推出的?应该是一个递推的过程,我们可以把地图分成几层,如图我们把地图分成了七层,其中每一层都是由前一层推过来的,也就是说想知道第七层的最优解,我们必须要先知道第六层的,要知道第六层的就必须知道第五层的......由此我们要先知道第一层的最优解,然后推出第二层最优,这样一层一层递推下去必然是最优解,再接着我们发现每个层之间只用两层...原创 2018-12-04 21:10:55 · 367 阅读 · 0 评论 -
Codeforces 983B. XOR-pyramid (dp?)(*1900)
https://codeforces.com/contest/983/problem/B题意,通过给定的方式求给定区间(l, r)的异或和,给定的方式也很简单,就是一点一点算呗,用一个二维数组模拟递推过程,不过wa了,因为没读懂题干,题目要求给定区间内异或和最大是多少,边界不一定是l和r,所以我们就用到了第二个数组来保存最优解,这个地方应该是用dp的思想保存下来的状态转移方程:ans[...原创 2018-12-13 00:10:50 · 172 阅读 · 0 评论 -
Codeforces 977 F. Consecutive Subsequence(简单dp)(*1700)
https://codeforces.com/contest/977/problem/F这世上根本就没有dp,又或者万物皆可dp对于dp,自己太过于死板了,而dp又太灵活,等等,快跟不上你的脚步(⊙﹏⊙)这道水题没什么想说的,追逐的dp太过虚无缥缈,所以思路要开阔啊。。。#include<iostream>#include<cstring>#inclu...原创 2018-12-13 19:54:25 · 170 阅读 · 0 评论 -
背包骚操作--DP数组的再利用
白书上给了个目前没什么用的解法,用dp[0][j]和dp[1][j]保存两个状态,利用&运算符不停滚动更新,这个虽然不如一维的开销小,但是以后也许会用的到,思路奇妙#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<v...原创 2019-02-25 18:38:46 · 145 阅读 · 0 评论 -
sdnuoj 1539 (01背包变形--枚举价值)
看了白书回来补这道题,惭愧惭愧出了一些玄学bug,估计数据不太行。。http://www.acmicpc.sdnu.edu.cn/problem/show/1539不太清楚总价值5000,为什么要开一个10000的数组才能ac,不知道到底哪里溢出了和01背包类似,同样通过递推得到最优解解题策略:01背包--相同容量的前提下求最大价值变种--相同价值的前提下求最小容...原创 2019-02-25 19:38:20 · 227 阅读 · 0 评论 -
洛谷 P1164 小A点菜(01背包状态转移方程详细推导)
题目链接今天刷题,本来背包问题感觉稳稳的懒得刷了,随手做两个就被卡住了,原来自己只会做死板的背包,这种稍微变形的就不会推状态转移方程了我又去看了一眼滚动背包的转变方法加上大佬的题解,才稍微明白,感觉背包问题都应该先写出二维的状态转移方程,根据滚动数组优化规则简化成一位的问题从而实现空间的优化,真是很难受了滚动背包优化详解关于这道题:定义f[i][j]为用前i道菜用光j元钱的办法总数,其状态转移方程...原创 2018-05-02 20:23:25 · 622 阅读 · 3 评论 -
滚动背包优化详解
滚动背包详解转载 2018-05-02 20:10:56 · 393 阅读 · 0 评论 -
HDU 1087 Super Jumping! Jumping! Jumping!
E - Super Jumping! Jumping! Jumping!HDU - 1087Nowadays, a kind of chess game called “Super Jumping! Jumping! Jumping!” is very popular in HDU. Maybe you are a good boy, and know little about this原创 2018-01-15 20:35:42 · 162 阅读 · 0 评论 -
HDU 1257 最少拦截系统
I - 最少拦截系统HDU - 1257某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能超过前一发的高度.某天,雷达捕捉到敌国的导弹来袭.由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹.怎么办呢?多搞几套系统呗!你说说倒蛮容易,成本呢?成本是个大问题啊.所以原创 2018-01-16 21:01:07 · 146 阅读 · 0 评论 -
HDU 1423 Greatest Common Increasing Subsequence (LCIS)
F - Greatest Common Increasing Subsequence HDU - 1423队内赛看到这个题,当时思路是先求出最长公共子序列,然后再求出其最长上升子序列,然而由于前者无法记录,这道题算是浪费了好长时间,后来从网上搜也没搜到应该怎么记录,再后来就知道这原来是一道裸的LCIS,知识面还是...原创 2018-02-27 07:50:31 · 179 阅读 · 0 评论 -
DP最长子序列 (常规加二分)
所有的最长子序列都差不多,只是>,<,>=,<=的区别,所以要注意符号问题,之前学过常规写法,今天又看到了一个二分写法,时间复杂度前者为n*n,后者为nlogn,所以学一学还是很有必要的,挑了一道自己oj上的dp水题传送门 : 最长不上升子序列常规写法很简单,也当是复习了#include<iostream>#include<cstring>#in...原创 2018-02-21 11:34:49 · 387 阅读 · 1 评论 -
POJ 1163 The Triangle + HDU 2084 数塔(递推dp)
B - The TrianglePOJ - 116373 88 1 02 7 4 44 5 2 6 5(Figure 1)Figure 1 shows a number triangle. Write a program that calculates the highest sum of numbers passed on a route th...原创 2018-01-15 18:45:49 · 228 阅读 · 0 评论 -
HDU 1195 (基础DP之LCS)
今天下午学了一下最长公共子序列,和最长公共子串不同,最长公共子序列是可以非连续的,而最长公共子串必须是连续的推荐一个博客,很详细:LCS详解这种dp和最长子序列一样用的是记忆化搜索,记录了之前计算的结果,避免了重复计算,提高效率我把LCS理解为建立一个直角坐标系,其中每一个点依次更新,更新到最后一个点即离原点最远的点记录的就是最终结果给的博客写的很清楚,可惜没有代码,从这里逐步分析一下:for(i...原创 2018-02-21 19:09:04 · 296 阅读 · 0 评论 -
DP之背包问题(01背包+完全背包+分组背包+多重背包+二维费用背包)
首先是01背包,所有背包问题的基础,看这个博客很棒: 01背包,里面讲的很详细一道裸题 HDU - 2602常规二维写法#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<vector>#include<set>...原创 2018-03-02 22:31:53 · 780 阅读 · 0 评论 -
HDU 3092(完全背包)
省赛前疯狂补题中,博客潦草一点 HDU - 3092这道题很难受,万万没想到是完全背包的变形当是扩展思路记录一下,其实和一般的完全背包还是不一样的,他是把n个物品等效成一个物品,一次性加入背包中,这样做的好处是可以计算乘方,而如果一次性加入则会越界?感觉这个代码实现挺神奇的,当扩展思路了题解链接代码直接挂人家的,不想敲了。#include <io...原创 2018-04-23 20:51:54 · 353 阅读 · 0 评论 -
SDNUOJ 1332.机器人(双线程dp?不懂不懂)
题目链接二维dp还能懂,四维就只能类比二维dp,其实和二维相近#include<cstdio>#include<algorithm>using namespace std;int f[60][60][60][60],n,m,mapp[60][60];int main(){ scanf("%d%d",&n,&m); for(int i=1;i<...原创 2018-05-01 21:36:15 · 184 阅读 · 0 评论 -
POJ 1742--多重部分和解法
https://vjudge.net/problem/POJ-1742多重部分和,常规dp超时超时思路 : 枚举每一种硬币,如果合理则bool数组为1超时代码:#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<v...原创 2019-02-26 16:51:22 · 457 阅读 · 0 评论