题意
给出 n和m并且 1 < n , m < 1 e 9 1< n,m < 1e9 1<n,m<1e9的矩阵,每次往里面放两个棋子,这两个棋子要满足曼哈顿距离等于3,问最多可以放多少枚棋子。
题解
你会发现手画是根本搞不出来的,想靠手画找规律可能需要有成为锦鲤的运气。每个点都可能会与周围距离为3的点配对,从而放下棋子,但当你在另一个位置放棋子时,若其周围距离为3的点与之前放棋子的点冲突,那该如何解决? 这个问题便是二分图最大匹配问题,我们把方格看成点构成一张图跑二分图匹配即可。但是! 若n,m小于100还好说,此题的n,m是爆炸级别的,根本没法跑复杂度平方级别的算法,那就用刚刚写的程序打表找找规律吧。 这里又有一个很神奇的地方,当n和m为奇数的时候,输出 n ∗ m − 1 n*m-1 n∗m−1,当其中一个为偶数的时候,输出 n ∗ m n*m n∗m,但是!当n和m小于20的时候,这种情况就不在符合。所以对n和m小于20的情况,跑二分图匹配,其余的按照规律输出即可。(奇技淫巧啊)
补充: 对与 n = 1 或 者 m = 1 n=1或者m=1 n=1或者m=1的情况要特殊处理下,明显1x6的矩阵可以摆满棋子,所以答案为 6 ∗ ⌊ m 6 ⌋ + 2 ∗ m a x { ( m m o d 6 ) − 3 , 0 } 6*\lfloor\frac{m}{6}\rfloor+2*max\{ (m\ mod\ 6 )- 3, 0\} 6∗⌊6m⌋+2∗max{
(m m