CF 1031 Div.2 解题报告
A(800)
直接贪。
B(1200)
数学题。能不能放主要是和两个矩形某一维的间隔有关,如果存在某一维的间隔可以用矩形填充,那么肯定存在解;否则肯定无解。
C(1700)
显然我们可以发现炸完一次后我们一定可以收集到剩余的所有金矿。用二维前缀和贪心即可。
D(2200)
神秘结论题。
可以得至少 \(x\) 分当且仅当你前 \(x\) 张牌的最小值大于对方前 \(n-x+1\) 张牌的最小值。
证明:如果成立,那么你至多输 \(n-x+1\) 次,且在遇到最小值后会至少赢 \(x\) 次。
交换通过维护前缀后缀最值即可。
E(2600)
很厉害的题目。
首先观察答案上界是 \(2n\)。( \(n\) 秒躲,\(n\) 秒赶路)
因为可以不动,所以考虑维护每一秒可以抵达的点的增量。
这个增量分两部分:
-
所有之前可以抵达的点通过走一条边可以到的点;
-
第 \(i\) 秒不能到的点;(需要判断是否可以与可以抵达的点相邻)
然后对于每一秒不能到的点直接移除可以抵达的点集即可。
F(2500)
没有那么厉害的构造题。
有一个套路:看到两个序列 \(a\) 和 \(b\),而且你觉得像二分图之类的,应该优先考虑图论。
又一个套路:是否交换可以用边的方向来刻画。
于是,我们把 \((a_i,b_i)\) 描述为 \(a_i\) 和 \(b_i\) 之间的无向边。
我们希望每个点既有出边又有入边。
构造方法是:
先从度数为 \(1\) 的点出发,然后边的方向为由自己指向边的另一个端点;
然后对于其他联通块,随便挑一个点,对其中一条边及访问到的节点这么处理,对其他边及访问到的节点反过来定向即可。

浙公网安备 33010602011771号