CF1268B Domino for Young (黑白染色)

Problem - 1268B - Codeforces

给出一个不规则的网格。共 nn 列,每列有 a_iai​ 个格子。现在要将 1 \times 21×2 的骨牌不重叠的覆盖在网格上,求最多能放的骨牌数量。

网格满足条件 高度左到右递减。

题解:

比较经典的骨牌填棋盘问题。

有神仙结论就是假如黑白间隔染色后,那么染出来的东西就一定可以用1*2的骨牌填满。

那么考虑填上即可。

假如都一样高,那么直接横着放就行了;

如果有差,那么就竖着填上差的部分再横着放;

ps:听说还有网络流经典棋盘建模操作,但是不会啊,好像还会T得很惨。数据有点不友好。 

/*keep on going and never give up*/
#include
using namespace std;
#define int long long
#define ll long long
#define db(x) cerr<<(#x)<<" "<<(x)<<" "<>n;for(int i=1,m;i<=n;i++){cin>>m;cnt[0]+=m/2;cnt[1]+=m/2;cnt[i%2]+=m%2;}	cout<


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部