codeforces511div1_b Little C Loves 3 II (二分图匹配+打表+找规律)

题意

给出 n和m并且 1 &lt; n , m &lt; 1 e 9 1&lt; n,m &lt; 1e9 1<n,m<1e9的矩阵,每次往里面放两个棋子,这两个棋子要满足曼哈顿距离等于3,问最多可以放多少枚棋子。

题解

你会发现手画是根本搞不出来的,想靠手画找规律可能需要有成为锦鲤的运气。每个点都可能会与周围距离为3的点配对,从而放下棋子,但当你在另一个位置放棋子时,若其周围距离为3的点与之前放棋子的点冲突,那该如何解决? 这个问题便是二分图最大匹配问题,我们把方格看成点构成一张图跑二分图匹配即可。但是! 若n,m小于100还好说,此题的n,m是爆炸级别的,根本没法跑复杂度平方级别的算法,那就用刚刚写的程序打表找找规律吧。 这里又有一个很神奇的地方,当n和m为奇数的时候,输出 n ∗ m − 1 n*m-1 nm1,当其中一个为偶数的时候,输出 n ∗ m n*m nm,但是!当n和m小于20的时候,这种情况就不在符合。所以对n和m小于20的情况,跑二分图匹配,其余的按照规律输出即可。(奇技淫巧啊)
补充: 对与 n = 1 或 者 m = 1 n=1或者m=1 n=1m=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\} 66m+2max{ (m m

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值