传送门
发现保持自信和做其他事情互不干扰,可以直接做一次 $dp$ 求出最多能空出几天来怼大佬
然后就变成给你若干天,是否能怼死大佬,考虑求出所有的 天数和输出的嘲讽值集合,因为天数不多,嘲讽值增长很快
所以直接 $BFS$ + $map$ 去重就行了
不怼大佬或者只怼一次的情况容易计算,现在问题是怼两次的情况怎么搞
设两次怼的嘲讽值分别为 $fx,fy$,输出这些嘲讽值需要的天数分别为 $dx,dy$
如果要怼死大佬,只要满足限制 $fx+fy<=C$,$C-fx-fy<=D-dx-dy$,把刚刚得到的集合按 嘲讽值,天数 双关键字排序
考虑维护两个指针 $x,y$,$x$ 从大到小,$y$ 从小到大,在枚举 $x$ 的时候移动 $y$ 使得 $y$ 满足 $fx+fy<=C$
把第二个式子变一下 $C-fx<=D-dx+(fy-dy)$
当我们固定了 $x$ 以后,要求的就是满足 $fx+fy<=C$ 中的 $fy-dy$ 的最大值
因为随着 $fx$ 增加,之前枚举到的 $fy$ 一直满足条件,所以直接搞一个变量维护当前 $fy-dy$ 的最大值即可
#include
#include
#include
#include
#include
#include
#include