决策单调性
gjghfd
这个作者很懒,什么都没留下…
展开
-
bzoj4709 -- 决策单调性优化DP
显然每个区间左右端点大小相等是最优的,否则可以把不相等的分出去。 于是可以列出DP方程: fi=max{fj−1+ai×(si−sj+1)2,ai=aj}f_i=\max \{ f_{j-1}+a_i\times(s_i-s_j+1)^2,a_i=a_j\} 由于二次函数是下凸的,可以用决策单调性优化。#include<bits/stdc++.h>using namespace std;#原创 2017-10-06 20:10:49 · 606 阅读 · 0 评论 -
bzoj2369 && 2687 -- 决策单调性优化DP
显然只选 22 个区间是最优的,因为取一个集合中所有区间一定没有只取最左和最右两个区间优。 对于那些有包含关系的区间,更新一下答案,只留下最大的区间就可以了。 将区间按左端点排序。 设第 ii 个区间为 [li,ri][l_i,r_i] 。可以发现若 p<k<i<jp<k<i<j ,且对于 ii 来说 kk 比 pp 优,那么对于 jj 来说 kk 也比 pp 优。 证明如下: (ri−l原创 2017-10-07 13:27:44 · 584 阅读 · 0 评论 -
Codeforces868F Yet Another Minimization Problem -- 决策单调性优化DP
令 fi,jf_{i,j} 表示前 ii 个数分成 jj 个区间的最小值,这样很容易列出DP方程。 然后发现可以用决策单调性优化。 注意分治的时候要将 [L,l−1][L,l-1] 的值预处理出来,其中[l,r][l,r]表示当前区间,[L,R][L,R]表示转移的区间。 时间复杂度O(knlogn)O(kn\log n)#include<cstdio>#include<cstring>#原创 2017-10-06 16:48:18 · 896 阅读 · 0 评论 -
[ 决策单调性 分治 ] LOJ#535 花火
题解#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>using namespace std;typedef long long ll;inline char nc() { static char buf[100000],*p1=bu...原创 2018-03-10 11:29:08 · 400 阅读 · 0 评论 -
[ 分治 决策单调性优化DP ] LOJ#6039. 「雅礼集训 2017 Day5」珠宝
设 fi,jfi,jf_{i,j} 表示售价 ≤i≤i\le i 的珠宝,使用 jjj 万元的最大吸引力。转移方程很容易写出。 因为售价相同的珠宝肯定是从最大吸引力开始取的,所以转移的函数是上凸的。 将 jjj 按 j mod ij mod ij~mod~i 分类,每一类的转移满足决策单调性,然后就可以用分治做了。 时间复杂度 O(maxciklogk...原创 2018-03-14 09:46:05 · 805 阅读 · 0 评论 -
[ 决策单调性优化DP ] 计蒜客 是男人就过 8 题 H Sign Location
%%%LargestJN显然标志放在车站上是最优的。 令 fi,jfi,jf_{i,j} 表示放了前 iii 个标志,最后一个标志在 jjj 位置的最小代价,转移推下式子就行了。 打个暴力发现满足决策单调性,分治做就好了。 讲下怎么推式子。 最终 kkk 个标志把 nnn 个车站分成了 k+1k+1k+1 个区间,我们把 (i,j)(i,j)(i,j) 的贡献算在 iii 所在的区间内...原创 2018-03-27 12:58:07 · 787 阅读 · 5 评论