
o(* ̄︶ ̄*)oDP
美团外卖
乘风破浪
展开
-
POJ3186(区间DP)
题目链接题意:有一个双向队列,可以从中取数,取出的第k个数乘以k就是这个数的价值,然后求所有数的最大价值。题解: 容易得到dp[i][j]=max(dp[i+1][j]+v[i]∗(n−j+i),dp[i][j−1]+v[j]∗(n−j+i))dp[i][j]=max(dp[i+1][j]+v[i]∗(n−j+i),dp[i][j−1]+v[j]∗(n−j+i))dp[i][j] = m...原创 2018-04-16 20:34:40 · 532 阅读 · 0 评论 -
HDU2476(区间DP)
题目 话说,这区间DP怎么能这么毁天灭地的难啊。 (达成成就,被爆锤X6) 题意: 给定两个字符串A,B,要把A串变成B串,你可以选择任意一个区间,然后将这个区间之内的字符全部变成某一个你想要的字符。题解: 先不用考虑如何从字符串A变成B,直接计算由空串制作一个字符串B需要多少花费,然后再考虑将A转变。 先考虑由空串制作字符串B dp[i][j]代表使区间i~j成为B串i~j的最...原创 2018-04-26 20:55:01 · 364 阅读 · 0 评论 -
HDU4283(区间DP)
题目链接DP这东西还是一如既往的毁天灭地的难啊。题意:有n个人参加非诚勿扰,每个人都有ninin_i的屌丝值,如果前面有k个人比他早,他就会有(k−1)∗(ni)(k−1)∗(ni)(k-1)*(n_i)的屌丝值,你可以让一些人进入一个小黑屋,来改变上场顺序,但是小黑屋是类似栈,先入后出。题解: dp[i][j]表示i~j区间的最优解。 对于i~j区间来说,第i个人可以第一个上,也...原创 2018-04-25 20:06:00 · 411 阅读 · 0 评论 -
HDU1864(01背包)
题目链接题意:中文题,但是注意单项是一类的意思。题解:根据题意筛出可以报销的发票,做01背包就可以了。输入的处理比较麻烦。#include<cstdio>#include<algorithm>#include<cstring>using namespace std;const int maxn = 35;const int maxm = 3...原创 2018-04-21 19:21:57 · 219 阅读 · 1 评论 -
POJ3616(最长上升子序列)
题意:母牛要规划自己后面n个小时的行程,然后农夫有一个时间间隔的表,表示在某一段时间间隔之间母牛可以产出多少奶,问最多可以产多少奶。做了这么多题,DP能力没有多少长进,英语阅读能力到是强了。。。 题解:把时间间隔按开始时间从小到大排序,然后写一个最长上升子序列的变式就好了。#include<cstdio>#include<cstring>#include<...原创 2018-04-20 20:28:17 · 321 阅读 · 0 评论 -
hihocoder1044(状压DP)
题目链接看博客一律都说很简单,还有各种骚操作。体验好差。考虑第到第i个位置的情况,我们只需要知道前面m-1个位置的情况就可以了。所以将前面m-1加上i这m个位置压缩为一个状态,然后可以求出取了几个位置,如果取了超过q个就不再考虑。 考虑小于等于q的情况。基本的状态转移方程就是 dp[i][j]=max(dp[i−1][j>>1],dp[i−1][j/2+(1<<...原创 2018-04-20 20:09:44 · 134 阅读 · 0 评论 -
ZOJ3469(区间DP)
DP的题。。。。还是一如既往的难到毁天灭地啊。。。(大佬们纷纷表示简单DP而已。) 上篇博客才写了感觉区间dp有套路,分分钟又被爆锤。 那么问题来了,什么时候才能看到曙光呢。题意:在一条坐标轴上,位于x位置有一家餐馆,有n个人订餐,要给他们送饭,收不到饭很不开心,每分钟会增加NiNiN_i的不开心值。一直每个人的位置和快递员的速度,求最少的不开心值。题解:先不用考虑快递员的速度问题,因...原创 2018-04-24 21:17:09 · 510 阅读 · 0 评论 -
POJ1651(区间DP)
好像区间DP都是枚举起点终点然后找一个中间状态进行一种类似松弛一样的更新??? 题目链接 题意:给定一组数字,从中任选除了首尾之外的数字,每次拿数字的花费为这个数这个数之前的数这个数之后的数,求总花费最小。题解: 区间DP dp[i][j]从i到j的最优解。 比较容易想到通过求解小区间最优解得到最后总区间的最优解。 很明显当l == r - 1时候DP值为0 当l == r - ...原创 2018-04-24 18:37:58 · 709 阅读 · 2 评论 -
LightOJ1422(区间DP)
题意:一个人要去参加舞会,对于第i个舞会他要穿第ni件衣服,他可以穿很多件衣服,一件套一件(厉害啊),但是如果这件衣服已经穿在身上了并且外面还有别的衣服,就要把外面的脱掉。问最少穿多少次衣服。 题解:dp[i][j]表示从第i个到第j个的舞会最少穿衣服的次数。 考虑第i个舞会要穿的衣服。如果i~j中没有和第i件相同的衣服,那么dp[i][j] = dp[i + 1][j] + 1 如果i~j...原创 2018-04-23 20:05:22 · 194 阅读 · 0 评论 -
Codeforces934C (区间DP)
题目链接题意:给定一组由1和2组成的数字串,你可以选定一个区间[l,r],然后将其翻转,然后使翻转后的数字串最长不下降子序列最长,输出最长不下降子序列的长度。题解: dp[i][j][k],表示i~j区间内,k为0时代表以2结尾的最长不上升子序列(也就是2的个数) k为1时表示以1结尾的最长不上升子序列。 dp[i][j][0] = dp[i][j - 1][0] + (num[j]...原创 2018-04-30 19:37:55 · 295 阅读 · 0 评论 -
HDU1260(简单DP)
题目链接题意:某人在八点开始卖票,共有K个人来买票,每个人买票都有时间花费NiNiN_i,对于连续的两个人可以一起买票,时间花费为SiSiS_i,问这个人最早可以什么时候卖完票。题解:一个简单DP,对于第i个人来说,可以与第i-1个人一起买,也可以自己单独买,那么状态转移方程就是dp[i]=min(dp[i−2]+S[i],dp[i−1]+N[i])dp[i]=min(dp[i−2]+S[...原创 2018-04-12 19:13:49 · 1490 阅读 · 3 评论 -
HDU2859(DP)
题目链接题意:给你一个字符矩阵,找一个沿着右上左下对角线对称的子矩阵,求子矩阵最大边长。题解:枚举每一个点作为左下角的情况,然后枚举这个点所在行右边和所在列上边的相同的点对数,和右上角的dp值+1进行比较,取小值。没有想出来,为什么做了一些题之后感觉没有一点进步。。。。。。 不过这个题的写法感觉真的很惊艳。#include<cstdio>#include<...原创 2018-04-17 21:25:27 · 320 阅读 · 0 评论 -
HDU1078(记忆化搜索)
题目链接题意:整个NXN的矩阵中每个位置都有一块奶酪,有一只老鼠从(0,0)出发,横着或者竖着最多走k步,并且只能在当前奶酪大于出发位置的奶酪时候才能停在这里。问最多能吃大奶酪。 没弄懂题意,我以为是横着+竖着可以走k步,也就是可以交叉走。所以不会。。所以,重点在于either,是二选一的意思。。? 题解:记忆化搜索一下就好了(没写出来)#include&lt;cstdio&gt;#...原创 2018-04-17 20:16:42 · 263 阅读 · 0 评论 -
HDU1069(最长上升子序列)
题目链接这个题题意难一半。 表示看题看了好久。 题意:给定n种长方体,给定长方体长宽高,每个长方体有无限个,要堆成塔形,问最高能堆多高。下面的必须长宽均大于上面的。题解:每个长方体怎么放是没有限制的,也就是说一个长方体可以有六种方法(刚开始我对这个存疑,但是亲手摆摆试试就知道了),也就是说我们最多将一个长方体可以扩展成六个,然后排个序,求最长上升子序列就可以了。#include...原创 2018-04-10 20:57:17 · 237 阅读 · 0 评论 -
HDU1087(最长上升子序列)
题目链接一个最长上升子序列,只不过把长度换成和。#include<cstdio>#include<cstring>#include<algorithm>using namespace std;#define ll long longll num[1005],dp[1005];int n;int main(){ while(~s...原创 2018-04-11 20:25:01 · 221 阅读 · 0 评论 -
HDU1074(状压DP)
题目链接题意:有n门课,每门课都要交作业,作业有时间花费和最晚提交日期,如果超过日期交作业,每超过一天就要扣一分,问最少扣多少分并且给出最少扣分的方案。题解: 因为最多只有15门课,所以可以压缩成一个数,二进制位上每一位代表一门课是否完成。然后开始DP。 枚举从1到1<< n的每一个状态i,然后枚举每一门课j(倒叙枚举,因为输入是按照字典序递增输入的),检查状态i是否完成了...原创 2018-04-11 19:59:06 · 467 阅读 · 0 评论 -
HDU1176(DP)
题目链接以前做过的一道题,再做依旧很费劲,动态转移方程不难写,但是在细节卡了好久。很气。 因为初始位置在5,所以一开始就从5模拟4次拿馅饼的位置,然后后面都一样了,最后在最大时间内找馅饼数最大。后来发现倒着推更简单。 设最最后一块馅饼是m时落下,那么从m-1时开始,dp[i][j]+=max(dp[i+1][j],dp[i+1][j−1],dp[i+1][j+1])dp[i][j]+=ma...原创 2018-03-16 20:26:59 · 140 阅读 · 0 评论 -
HDU1024(DP)
Max Sum Plus PlusTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 12589 Accepted Submission(s): 4146Problem Description Now I think you...原创 2018-03-20 20:53:11 · 218 阅读 · 0 评论 -
“浪潮杯”山东省第九届ACM大学生程序设计竞赛 G Games(DP)
Problem DescriptionAlice and Bob are playing a stone game. There are nnn piles of stones. In each turn, a player can remove some stones from a pile (the number must be positive and not greater than ...原创 2018-05-19 20:50:04 · 450 阅读 · 2 评论