二分题目中通常有暗示: 最大值最小/最小值最大 (在最之间取平衡点) 最靠近某个值(类似) 最小的能满足条件的代价 ***寻找题目中具备的单调性,运用二分解决问题 聪明的质检员 https://www.luogu.org/problemnew/show/ P1314 二分+前缀和(通常区间求值)通过 ...
分类:
其他好文 时间:
2020-02-23 21:55:47
阅读次数:
71
题目描述 一排 $n$ 个村庄,试规划 $K$ 个雕像的位置(不一定在村庄里),以最小化每个村庄到最近雕像的距离之和。 题解 考虑暴力 $\text{dp}$ : $f[j][i]$ 表示前 $i$ 个分了 $j$ 段的最小值,转移在i这一维满足决策单调性,但是这样是 $O(nklogn)$ 过不去 ...
分类:
其他好文 时间:
2020-02-22 20:01:08
阅读次数:
68
"Link" 显然答案具有单调性,所以我们考虑二分答案。 由题可知,JOI和IOI的分界线是单调的,即要么是从左上到右下,要么是从左下到右上。 并且我们知道,最大值和最小值肯定不能在同一个省里。 所以要么是最大值$mx$在左边的省里,要么是最小值$mn$在左边的省里。 所以对于一个二分出来答案$li ...
分类:
其他好文 时间:
2020-02-21 17:44:48
阅读次数:
63
参考博客:https://www.luogu.org/blog/ybwowen/dan-diao-dui-lie 单调队列这个名字就指明了它的性质——单调性,是一个单调的双端队列 下面列出deque的常用成员函数:来自:https://blog.csdn.net/morewindows/articl ...
分类:
其他好文 时间:
2020-02-17 11:53:22
阅读次数:
53
转自:https://blog.csdn.net/qq1169091731/article/details/52006440?utm_source=app 1、定义 单调栈是一种特殊的栈,其栈内的元素都保持一个单调性(单调递增或者递减) 2、作用 利用单调栈,可以找到从左(或者右)遍历第一个比它小( ...
分类:
其他好文 时间:
2020-02-12 18:32:20
阅读次数:
64
题目描述 题解 考虑暴力dp: $f_{i,j}$表示前 $i$ 个分 $j$ 段的最小值,于是 $f_{i,j}=min{f_{k,j-1}+w_{k+1,i}}$ 其实想一下应该会发现上述dp具有决策单调性,于是我们可以分治求出每个 $i$ 的决策点 效率: $O(nklogn)$ 代码 #in ...
分类:
其他好文 时间:
2020-02-08 15:48:26
阅读次数:
60
A. Ring 几乎是原题。 发现对于一个确定的左端点,必然存在一个分界点r,使得所有右端点>r的区间都存在环,其余都不存在。 考虑这个东西具有单调性,所以用双指针就可以实现这个过程。 那么剩下的问题就是动态维护图的连通性,使用LCT即可。 B. Exchange 发现主要的问题在于2操作。 观察这 ...
分类:
其他好文 时间:
2020-02-07 22:31:33
阅读次数:
76
如果f[x]表示有x个对手时候的最大获益。不难看出f[x] = max(f[i] + 1 - i / x)。i表示这次答题后剩下几个队首。 不难看出,随着x的增加,最大转移的i也是单调的,然后单调性优化下就可以了。 1 #include <cstdio> 2 using namespace std; ...
分类:
其他好文 时间:
2020-02-07 11:13:21
阅读次数:
75
$f[i][k]$ 表示前 $i$ 个分成 $k$ 段,且最后一段以 $i$ 结尾的最小值 容易写出转移方程 $f[i][k] = \min \{f[j][k - 1] + calc(j+1,i)\}$ 因为具有决策单调性(打表 or 证明(不会)),就可以一种分治算法来优化 具体实现就是 $sol ...
分类:
其他好文 时间:
2020-02-04 18:32:36
阅读次数:
67
单调队列解答: /*******************单调队列!=优先队列单调队列是为了保证队列内的元素具有单调性,在保持了元素原本顺序的同时,对元素进行了过滤,舍弃了会影响单调性的元素而优先队列本质上还是个队列不会舍弃任何元素,每个元素都在队列之中,但是在队列中的位置由优先队列定义的优先级来确定 ...
分类:
其他好文 时间:
2020-02-04 14:19:52
阅读次数:
80