CF1439
A. Binary Table
给你一个大小为 \(n \times m\) 的表格。该表格由 \(0\) 和 \(1\) 组成。你可以进行如下操作:选择属于同一个 \(2 \times 2\) 子方格的 \(3\) 个不同单元格,并将这些单元格中的符号翻转(即 \(0\) 变为 \(1\),\(1\) 变为 \(0\))。你的任务是将表格中的所有符号都变为 \(0\)。你最多可以进行 \(nm\) 次操作。你不需要最小化操作次数。可以证明,总是存在一种方案使得所有符号都变为 \(0\)。多测。\(n,m \leq 100\),\(\sum nm \leq 2 \times {10}^4\)。1s / 250M。
考虑一个 \(2 \times 2\) 的子方格,你最多只需要操作 \(4\) 次就能把它变成全 \(0\)。也就是说,如果我们把整个表格拆成若干个 \(2 \times 2\) 的子方格,那么总操作次数是不超过 \(nm\) 的。
有一个问题是,如果整个表格无法拆成若干个 \(2 \times 2\) 的子方格呢?你会发现,其实 \(2 \times 3\)、\(3 \times 2\) 以及 \(3 \times 3\) 的子方格也都是满足题目要求的,所以也可以拆成这种的子方格,那么显然是能拆的,直接做即可。
C. Greedy Shopping
给定一个整数数组 \(a_1, a_2, \ldots, a_n\),该数组是非递增的。
现在有一条街道,上面有 \(n\) 家商店,商店从左到右编号为 \(1\) 到 \(n\)。第 \(i\) 家商店的一顿饭的价格为 \(a_i\)。
你需要处理 \(q\) 个两种类型的操作:
- 1 x y:对于每个 \(1 \leq i \leq x\),将 \(a_i\) 赋值为 \(\max(a_i, y)\)。
- 2 x y:有一个手里有 \(y\) 元钱的饥饿的人,他会从第 \(x\) 家商店开始,依次访问到第 \(n\) 家商店。如果他有足够的钱购买当前商店的饭(即手里的钱不少于 \(a_i\)),他就会买一份,并且钱减少 \(a_i\)。请你计算他能买到多少份饭。
要求复杂度双 \(\log\)。
对于第一个操作,直接二分出修改的端点即可。对于第二个操作,发现连续段数量为 \(\log y\) 级别的,所以直接做时间复杂度是对的。总时间复杂度双 \(\log\)。

浙公网安备 33010602011771号