斜率优化
zhhx2001
这个作者很懒,什么都没留下…
展开
-
斜率优化第一道——hdu3507(有图)
/ dp[i]= min{ dp[j]+M+(sum[i]-sum[j])^2 };斜率优化不等式的右边,要保证是单调的,才能用斜率优化 #include #include #include #include #include using namespace std; int n,a[600005],q[600005],head,m,tail,sum[600005],f[6原创 2016-08-11 10:28:32 · 391 阅读 · 0 评论 -
有关斜率优化决策单调性的证明
斜率优化用到单调队列,自然要求满足决策单调性 然而网上关于这个的讲解实在太少(无),速来填坑 通过hdu3507,最基础的斜率优化dp来讲,实际上都是大同小异 基本就是,证明k选g为最优决策,j(j>k)选g都比选h(h原创 2016-08-11 12:03:55 · 1074 阅读 · 0 评论 -
apio2010特别行动队(斜率优化)
这题是上凸形, 题目当中,还是要注意括号的问题。。因为括号套错了一层RE了好几次 关于,斜率优化,感觉一般的常数项,和i有关的就都放在右边吧,比如已知的那些常量,由此尽量保证左边的上下分子分母都是正的应该是好处理吧 #include #include #include #include #include using namespace std; typedef lon原创 2016-08-11 15:13:54 · 300 阅读 · 0 评论 -
bzoj1597土地购买(斜率优化)
分析题目如果一个矩阵长宽都小于另一个矩阵,那么这个矩阵是可以忽略的 然后以长升序,宽降序排序, 再按上面的优化去重,最后会得到长升序,宽降序的序列(因为后边的长肯定长,如果不降序,那么有一个肯定会被后边的覆盖) dp【i】=min(dp【j】+width【j+1】*height【i】);//本题,要求两个最大值相乘的值,max不满足区间减法,然后灵活的通过分析题目性质排序,将最大值处原创 2016-08-11 17:09:39 · 492 阅读 · 0 评论 -
bzoj3156(斜率优化)
一般斜率优化的题就那一个式子(又在瞎说。) 刚开始推了两个 f[k]+(i-k)*(i-k-1)/2+a[i] 设K=k+1,J=j+1 f[k]+(i-k)*(i-K)/2 2*f[k]-i*k-i*K+k*K 2*(f[k]-f[j])+k*K-j*J (2*(f[k]-f[j])+k*K-j*J)/(k+K-j-J) #include #in原创 2016-08-11 23:10:11 · 402 阅读 · 0 评论 -
COGS锯木厂选址(斜率优化)
这道题,需要选两个锯木厂,标定了选的份数,以前做的题都是可以分成任意的分数 实际上,这道题n^2枚举锯木厂的位置,O( 1 ) 计算,找出最大值。 算是斜率优化,感觉不是特别好说是斜率优化dp,因为这道题,当确定了第二个锯木厂,第一个锯木厂的选择是有决策单调性,其实斜率优化就是用了处理决策单调性的问题决策选取的,这道题推式子可以推出来斜率式,能推出斜率的式子,就可以来用单调队列维护决策原创 2016-08-12 16:24:24 · 320 阅读 · 0 评论 -
bzoj1010(斜率优化)
裸的斜率优化 刚开始我还很脑残的就把那个基本的式子带进去推(斜率式)了。。。可是那个实在是太复杂了,由此说明,如果我们可以尝试通过一些方法将式子简化,再代入斜率优化来推。 比如本题:容器长度x=j-i+Sigma(Ck) ,他是说,每一个玩具之间都要加一个单位长度隔开,其实就当玩具长度加一,一个组合的长度就是总长度-1(因为间隔数是玩具数-1)所以间隔要少一个。 这叫,优化d原创 2016-08-12 17:38:02 · 404 阅读 · 0 评论 -
bzoj1096(斜率优化)
锯木厂选址复杂版。 注意颠倒一下顺序做即可 #include #include #include #include #include using namespace std; typedef long long ll; const int N=1000005; ll read() { ll ans,f=1;char ch; while ((ch=getchar())'9') if原创 2016-08-12 18:49:14 · 298 阅读 · 0 评论 -
bzoj3437(斜率优化
像这题,有的时候正向的dp式子不好进行斜率优化, 就是 f【i】=min{f【j】+cost【j+1~i】}样的式子,一般好多都可以斜率优化,但是有一些cost【j+1~i】不能在常数时间内差分之类求出来, 反正这题是正向不好差分,但是反向可以差分,就是锯木厂选址那样的思路,一个s【i】表示sigema j b【j】*dis[j] (距离和值相乘这一类的) 1:反向来做easy原创 2016-08-12 23:39:59 · 258 阅读 · 0 评论