[BZOJ 2756] 奇怪的游戏

Link:https://www.lydsy.com/JudgeOnline/problem.php?id=2756

Algorithm:

比较新颖的题目

首先发现是对矩阵中相邻两数进行操作    <----->    想到黑白染色

于是Delta(BlackSum)=Delta(WhiteSum)

由于最后要变成同一个数X,

那么在BlackNum=WhiteNum时,

1、如果WhiteSum!=BlackSum,显然无解

扫描二维码关注公众号,回复: 976602 查看本文章

2、如果WhiteSum==BlackSum时,由于矩阵能被1*2的矩形完全覆盖,那么X是否满足要求是具有单调性

      于是我们二分X,进行判断即可

在WhiteNum!=BlackNum时,

显然可以得到XWhiteNumWhiteSum=XBlackNumBlackSum

移项后显然可以化简出X=(BlackSumWhiteSum)  /   (BlackNumWhiteNum)

验证这个X即可

最大问题,如何判断X是否可行,

一开始得出的性质:Delta(BlackSum)=Delta(WhiteSum),符合流守恒性(流入和流出量相同)

于是我们进行可以将黑点看作一边,而将白点看作另外一边,网络流建图:

S-->白点,CAP为X-val[i][j]

黑点-->T,CAP为X-val[i][j]

相邻的白点-->黑点,CAP为INF

判断能否满流即可

Code:

待填坑

Review:

1、看到这种对相邻格子同时操作的题目,想到黑白染色

2、求极值,观察值的可行性是否具有单调性,从而能否二分

3、当数据能分为两组,且具有流守恒性时

      考虑使用网络流

猜你喜欢

转载自www.cnblogs.com/newera/p/9070590.html
今日推荐