本文共 4289 字,大约阅读时间需要 14 分钟。
很明显,前50pts可以手玩出来
我们可以先不考虑 0 ⩽ a ⩽ 1 0 6 0\leqslant a\leqslant 10^6 0⩽a⩽106的限制,先暴力跑出来一组解,在这组解上修改得到合法解。
如何进行修改得到的答案满足 b b b的限制呢?我们需要使得每一个方块格子和不变。于是,我们有了以下四种构造方法: + x +x +x, + x +x +x, + x +x +x, + x +x +x, . . . . . ..... ..... − x -x −x, − x -x −x, − x -x −x, − x -x −x, . . . . . ..... ..... + x +x +x, + x +x +x, + x +x +x, + x +x +x, . . . . . ..... ..... − x -x −x, − x -x −x, − x -x −x, − x -x −x, . . . . . ..... ..... . . . . . ..... ....., . . . . . ..... ....., . . . . . ..... ....., . . . . . ..... ....., . . . . .... ....+ x +x +x, − x -x −x, + x +x +x, − x -x −x, . . . . . ..... .....
+ x +x +x, − x -x −x, + x +x +x, − x -x −x, . . . . . ..... ..... + x +x +x, − x -x −x, + x +x +x, − x -x −x, . . . . . ..... ..... + x +x +x, − x -x −x, + x +x +x, − x -x −x, . . . . . ..... ..... . . . . . ..... ....., . . . . . ..... ....., . . . . . ..... ....., . . . . . ..... ....., . . . . .... ....+ x +x +x, − x -x −x, + x +x +x, − x -x −x, . . . . . ..... .....
− x -x −x, + x +x +x, − x -x −x, + x +x +x, . . . . . ..... ..... + x +x +x, − x -x −x, + x +x +x, − x -x −x, . . . . . ..... ..... − x -x −x, + x +x +x, − x -x −x, + x +x +x, . . . . . ..... ..... . . . . . ..... ....., . . . . . ..... ....., . . . . . ..... ....., . . . . . ..... ....., . . . . .... ....− x -x −x, + x +x +x, − x -x −x, + x +x +x, . . . . . ..... .....
+ x +x +x, − x -x −x, + x +x +x, − x -x −x, . . . . . ..... ..... − x -x −x, + x +x +x, − x -x −x, + x +x +x, . . . . . ..... ..... + x +x +x, − x -x −x, + x +x +x, − x -x −x, . . . . . ..... ..... . . . . . ..... ....., . . . . . ..... ....., . . . . . ..... ....., . . . . . ..... ....., . . . . .... ....很明显,前面两种行列全部都是加的我们是比较难维护的,而后面的两种我们是可以通过差分约束来进行维护。
我们假设第3种每行加上的是 r o w i row_{i} rowi,第十种每行加上的是 c o l j col_{j} colj,那么针对点 ( i , j ) (i,j) (i,j)有限制 − A i , j ⩽ ( − 1 ) i + j r o w i − ( − 1 ) i + j c o l j ⩽ 1 0 6 − A i , j -A_{i,j}\leqslant (-1)^{i+j}row_{i}-(-1)^{i+j}col_{j}\leqslant 10^6-A_{i,j} −Ai,j⩽(−1)i+jrowi−(−1)i+jcolj⩽106−Ai,j,这里的 A i , j A_{i,j} Ai,j指我们暴力跑出解得 A i , j A_{i,j} Ai,j。 我们将 r o w i row_{i} rowi与 c o l j col_{j} colj都建成一个点,那么我们就针对每个点都得到 n / m n/m n/m个限制。 也就是一个有 n + m n+m n+m个点, 2 n m 2nm 2nm条边的带权有向图,如果这个图中有负环,那么就是无解的。我们只需要跑一遍SPFA就可以得到解了。时间复杂度 O ( T n m ( n + m ) ) O\left(Tnm(n+m)\right) O(Tnm(n+m))。
很明显,如果出现负环,时间复杂度就会被卡满,我们得加点小优化,准确说就是当一个点到1号点经过的边超过30的时候就给他直接判无解了。#include#include #include #include #include #include #include #include #include
转载地址:http://mrqt.baihongyu.com/