倚天剑的愤怒
设考虑到 \(i\) 后得到的数是 \(x\),如果 \(x+v_i<0\) 则后面连续的负数都要删掉,连续正的肯定都不删
这样配合线段树和二分可以做到 \(\Theta(mn\log^2n)\),如果离线可能会有更好的复杂度
(还没暴力快)
这个做法会被正负区间交错的数据卡掉,然而发现每个正数会拿来消掉一些负数
直接对着正数二分加线段树维护前缀最小值是不对的,这个正数抵消的时候可以抵消后面的负数来达到最小的抛弃,所以这部分堆扫一遍就行
把取堆里面每个元素的前缀和代价搞出来,离线扫一下就行
原谅
按权值排序之后逆序扫,把当前所有点都加入的是需要合并它和它们的 \(lca\) 的链
那么如果加入某个点后存下来的最小值和这个值一样,更新答案
如果有一个权值全部加入之后最小值满足大于等于次于其的第一个,枚举对应的在连通块周边的点扩展
这个题考试的时候没写完,昨晚 \(CF\) 的树题和这个都没写完
收集
没写的都是简单题/dk
发现这个带修就是 \(\texttt{SDOI2015寻宝游戏}\)
用 \(set\) 维护 \(dfn\) 序即可,然后这个和上题不同的是这题并不需要返回,那么就是关键点直径,和 \(\texttt{ZJOI2007捉迷藏}\) 是一样的
所以就是代码题