![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
dp
文章平均质量分 65
Thyhhhhhh
弱鸡一枚
展开
-
NOIP模拟赛 baoj2933数据
题解:dp很容易看出来,状态转移方程也很容易写dp[i]=dp[j]+abs(a[j+1]-(i-j-1)) ,然后你就可以发现时间复杂度爆掉了然后我就发现我不知道该如何优化了,于是写了暴力然后。。。。并没有拿到说好的60分,而是25分。。。。最后发现在这区区25行的代码中,我的for是从i=2开始的60分code:#include#include#includec原创 2017-07-24 18:52:15 · 248 阅读 · 0 评论 -
[BZOJ2239]猜谜语
出自xjc UISG103 大佬之手题目描述给出一个长度为N的数字字符串和一个数字T,要求插入最少的加号或者乘号,使得数字字符串的运算结果为T。运算符*号优先级高于+号,运算数可以有任意个前导0.输入输入不超过5组数据,每组数据两行。每组数据的第一行为长度N,只包含0~9的数字字符串;第二行为一个数字T。输入T转载 2017-07-24 21:14:49 · 422 阅读 · 0 评论 -
NOIP模拟赛 bzoj2934业务(好题)
题解:这道题是一道最短路,但光凭最短路是不行的,还需要有一定的dp思想相信Floyd这个算法对于各位来说都并不陌生,而这道题所用到的dp思想也正与Floyd中的类似,事实上,至今为止,我见过的图论中能用的dp似乎也就这个我们定义状态ans[i][j]表示从i到j的最小费用dis[i][0]表示从k出发到j,费用最大的城市是k的最小费用dis[i][1]表示从k出原创 2017-07-24 19:56:29 · 226 阅读 · 0 评论 -
noip模拟赛 bzoj2237龙珠雷达
题解:一道dp题,恩,没错,非常好,时间复杂度O(n*m*m),爆了,恩,没错,非常好,看了是要优化了让我看看,恩,不是线段树优化,不是斜率优化,不是四边形不等式优化,what? 那是什么?。。。。。。。。。。。。。行,我写暴力(t2打成t1,原本70分代码成功爆0)所以说,我,这个,傻bi,应该忘记了,除了这些高大上的优化以外,还有一个优化,叫单调队列。。。。。。。。。。。。。。原创 2017-07-23 21:39:56 · 273 阅读 · 0 评论 -
树形dp(IOI 2005河流代码理解)
题目描述几乎整个Byteland王国都被森林和河流所覆盖。小点的河汇聚到一起,形成了稍大点的河。就这样,所有的河水都汇聚并流进了一条大河,最后这条大河流进了大海。这条大河的入海口处有一个村庄——名叫Bytetown在Byteland国,有n个伐木的村庄,这些村庄都座落在河边。目前在Bytetown,有一个巨大的伐木场,它处理着全国砍下的所有木料。木料被砍下后,顺着河流而被运原创 2017-04-07 19:48:31 · 625 阅读 · 0 评论 -
欧几里得旅行商问题uva1347
题意:自见紫书题解:这道题啊,我发誓我是听过的,但是我忘了,然后自己盯着这道题想了好久,也没想出来dp这东西,定义状态是非常重要的啊,发现自己对这道题的状态完全下不去手有两种分析思路:第一种是,设f[i][j]表示前i个点已经访问过,落后的人在j时经过的最小路程规定i>j,所以dp方程式就是if(jif(j==i-1) f[i][j]=min(f[i-1][k]+d原创 2017-07-17 15:06:55 · 285 阅读 · 0 评论 -
dp uva1331最大面积最小三角形剖分
题意不多说题解:这道题的dp题非常好,方程式的定义看似简单,但其实很难想到dp[i][j]表示编号从i到j的点构成的多边形中的最大三角形面积注意到这一点,这个图是封闭的,也就是一个环状,所以不能忽略掉如dp[n][1]这种情况解决方法就是mod n在根据一系列几何知识: dp[i][j] = max( dp[i][k], dp[k][j], S(i,j,k);(S是三点围成原创 2017-07-19 08:51:30 · 268 阅读 · 0 评论 -
动态规划总结
很多dp的模型是十分重要的,需要记住首先是石子合并这个模型,它有很多种变式,比如把合并的代价是两堆石子的数量改成分离的代价是这堆石子的总数(bzoj 分卷子)又如把合并点改成合并边(uva10003切木棍),还有把石子变成一个环的啊(hdu3506Monkey Party),都是如此dp[i][j]表示合并第i堆到第j堆石子的最小代价石子合并的状态转移方程: dp[i][j]=原创 2017-07-18 10:23:25 · 161 阅读 · 0 评论 -
uva12563 劲歌金曲
题意:见紫书。题解:一道裸的01背包,但是有一个地方有点坑,题目说的是t有10^9,但事实上,t最多只能有180*n+678code:#include#include#include#include#include#includeconst int MAXN=55;const int MAXM=10005;using namespace std;int T,dp[M原创 2017-07-17 19:42:46 · 230 阅读 · 0 评论 -
uva1625 Color Length
题意不说了题解:(还是去网上搜了题解。。。)定义dp[i][j]为第1个序列被取走了i个字符,第二个序列被取走了j个字符定义c[i][j]为两个字符串分别被取走i,j个字符后还有多少已经开始但仍未结束的字符,这个是可以预处理出来的而对于新序列来说,每增加一个字符,它的ans就会增加c于是dp方程式就是:dp[i][j]=min(dp[i-1][j]+c[i-1][j],dp[i原创 2017-07-18 08:52:36 · 185 阅读 · 0 评论 -
uva437 巴比伦塔
题意:见紫书题解:一道水得不能再水的大水题,却让我给想多了每种立方体的长宽高有6种不同的情况,把输入的拆成6个来考虑用最长上升子序列的思维,状态转移方程 dp[i]=max(dp[i],dp[j]+p[i].h);因为开始时立方体是无序的,所以按长或者宽或者什么神奇的东西拍个序使能够让第i个立方体堆上的所有合法方案一定都在前i-1个立方体里面就可以啊啊啊,我竟然没想出来原创 2017-07-17 14:29:14 · 275 阅读 · 0 评论 -
noip膜你赛 第三题 小Q的新玩具(dp优化 set)
题意:有n个零件,每个零件重量不同,你需要把它们运输回去,你只能运输连续的一段零件,且这连续的一段零件重量之和不能大于limit,而运输某一段的花费是这段重量的最大值。题解:这毫无疑问是一道毒瘤题,dp方程很简单,优化却比较复杂。我们令dp[i]表示前i个零件的最小费用所以dp[i]=min(dp[j]+max_w(j+1,i)) (sumw[i]-sumw[j]朴素做法O(n原创 2017-07-25 21:49:34 · 472 阅读 · 0 评论