前置知识:只有二分
出处
论文:浅析一类二分方法
第一次出现在2012年的国集的作业中,推广是在2015年,又是一个发明于中国国家队/集训队的算法(不得不说,中国信息竞赛的发展推动世界科学进步
思想
基本
WQS二分,又叫凸优化,适用的问题有以下几个限制:
- 函数是个凸函数(斜率单增/单减)
- 可以较短时间内求出函数(显然也是个凸函数)的最值及最值点
- 限定k,求
先画图吧:
先用上凸函数分析,因为下凸同理。
由于题目有特殊性质:
可以较短时间内求出函数的最值及最值点
我们怎么利用它求得呢?
在时,我们可以把上图中的上凸包变个样:
我们发现,当时,最值点往右移,当时,最值点往左移,越大移动距离越大,具有单调性,
当我们把最值点移动到k时,就可以直接求得的值,再减去就是要求的答案。
于是该算法流程就出来了:二分出一个,使得的最值点等于k,然后求出对应最值-。
稍作扩展
上述情况其实并不多见,更多情况下并不是严格凸包,它是斜率单调不减/增的,也就是说,二分中最值点可能构成一个区间:
这种情况下,如果只求出区间中一个最值点,可能永远无法让其等于k。
想一想,我们其实只需要满足k在我们求得的最值区间中就可以了,这样求得的最值仍然等于,最后减去即可。
所以二分变为:二分出一个,使得的最值点区间的左端点不大于k且最靠近k,这样的区间保证可以包含k,然后求出对应最值-。
我们只需要保证仍然可以短时间内求出最值和最小的最值点即可。
一些例题
关于例题讲解就先咕着,读者可以看别人的题解