嗯嗯
https://www.luogu.com.cn/problem/CF1874F
考虑容斥。发现当 \([l_1,r_1]\) 和 \([l_2,r_2]\) 有交且不包含,且均为坏区间时,\([l_1,l_2-1]\) 也是坏区间。所以在容斥时,只要钦定了 \([l_1,r_1]\) 和 \([l_2,r_2]\),那么 \([l_1,l_2-1]\) 是否被钦定对答案并没有影响。所以钦定和不钦定的方案会一一抵消。
所以只需要考虑钦定区间两两包含或不交的情况即可。直接区间 dp。
https://atcoder.jp/contests/arc207/tasks/arc207_d
太困难。
当 \(n,m\) 是一奇一偶时,不妨设 \(n\) 是奇数:
- 当中间的两个格子其中之一为 \(1\) 时,先手必胜。先手只需用第一次操作让这个 \(1\) 变成中间格,接下来一直模仿后手的操作即可。
- 当中间的两列其中一列的中间三个格子为 \(101\) 时,先手必胜。先手只需用第一次操作让这一列变成中间列,在后手第一次删除行的时候做和后手一样的操作,接下来一直模仿后手的操作即可。
- 其他情况先手必败。此时后手可以保证中间格始终有 \(0\)。
当 \(n,m\) 奇偶性相同时,先手的第一次操作会让 \(n,m\) 变成一奇一偶,枚举这第一次操作然后用上面的方法判断。
https://www.luogu.com.cn/problem/P11986
考虑只有左上和右下两个医院怎么做。把所有点按 \(x+y\) 排序,去左上角的一定是一段前缀,去右下角的一定是一段后缀。
现在有四个医院。把所有点按两种方式排序,第一种按 \(x+y\) 排,第二种按 \(x-y\) 排。排完序之后枚举两个分界点,这样每个点都只剩下了两种可能选择的医院,可以用这个把点分成四组。对四组分别跑个背包,然后枚举第一组里面去左上角的总用时,接下来的部分都可以用背包信息完成 check。时间复杂度 \(O(n^2t)\)。
https://www.luogu.com.cn/problem/P11989
设 \(f_i\) 表示难度等级为 \(i\) 的答案。我做这题时发现了若干性质,比如 \(f\) 是凸的,并且形成 \(O(n)\) 段等差数列。但这种对 \(f\) 整体的分析似乎没有什么前途了,只能做到大概 \(O(n^2\log n\log L)\) 的复杂度。我们需要深挖 \(f\) 的性质。
怎么求出一个 \(f\)?当然可以直接贪心,但是这个没有什么优化的空间。考虑当 \(P_i\) 全为 \(1\) 时怎么做,直接就是一个 Hall 定理,答案的形式非常简单。当 \(P_i\) 不全为 \(1\) 时,枚举值域转 01,然后套 \(P_i=1\) 的做法。
推一推式子发现是凸包的形式,然后就做完了,复杂度 \(O(n^2+L+q\log L)\)。
https://zhengruioi.com/problem/3378
考虑把物品按 \(b\) 排序,区间 \([l,r]\) 的答案 \(f(l,r)\) 是区间内最大的 \(k\) 个 \(a\) 加 \(\min b\) 减 \(\max b\)。
定义 \(p_r\) 表示使得 \(f(l,r)\) 最大的 \(l\)。\(f\) 满足四边形不等式,即交叉优于包含。所以 \(p\) 是单调的。然后分治,复杂度是 \(O(n\log^2 n)\),一个 \(\log\) 是分治,一个 \(\log\) 是求区间前 \(k\) 大带上的数据结构复杂度。使用只删除的链表可以做到 \(O(n\log n)\)。
https://zhengruioi.com/problem/3367
这题类似 P11989,也是匹配的形式,于是我考场上一直在想转 01,但是这题正解不是转 01。
考虑在 \(1,3,5\cdots\) 的位置放上一个匹配点,然后跑最大权匹配,就可以得到 \(ans_1\)。令 \(a_1\gets \operatorname{inf},a_{n+1}\gets a_1,a_{n+2}\gets a_2\),然后跑最大匹配,就可以得到 \(ans_3\),以此类推。于是我们需要解决的是,单点加,查询最大权匹配。
考虑新加入一个待匹配点后,新的最大权匹配和原最大权匹配至多只差一个点。于是直接线段树维护 Hall 定理,做完了。