挖坑场,都是代码有空补系列胡题。
现在已经变成半个to do list了
http://codeforces.com/problemset/problem/601/B
L 的取值一定是相邻的两个,差分一下,变成多次询问区间内所有子区间max的和。
算法一:维护一个单调栈,每次询问 (mathcal{O}(n)) 一遍区间,每扫到一个数用单调栈的信息更新答案。时间复杂度 (mathcal{O}(qn))
算法二:考虑列出 (L) 的矩阵,每个数的贡献是一个矩形,查询是也是一个矩形,二维树状数组维护矩形加,矩形求和即可。(mathcal{O}(qlog ^2 n))
补题状态:未补
https://codeforces.com/problemset/problem/1450/C2
abcabcabc...
bcabcabca...
cabcabcab...
这样给各自编号后,有三种修改方案可以选择:
-
a->O,b->X
-
a->X,c->O
-
b->O,C->X
不难发现三种方案修改的次数总和为 (k),根据抽屉原理必有一种合法方案。
补题状态:未补
https://codeforces.com/gym/102900/problem/B
数字总和为(空地,雷)的相邻个数,那么可以把 (B) 改成都和 (A) 一样或者都和 (A) 相反,这样数字总和都能成为 (A) 的数字总和。由于两种方案总和为 (nm),所以必存在一种合法方案。
此题和上题的总结是,遇到构造题并且分母有个常数时,考虑抽屉原理。
补题状态:未补