poj2495

题意:一个国际象棋棋盘(8×8),从中挖掉两个格子,问能否用31张1×2的卡片恰好盖住剩余的格子。

分析:本来想二分图匹配,后来发现别人说有简便方法。

就是把棋盘染色成国际象棋黑白相间的棋盘,如果两个格子同色则不可,否则可以。

如果两个都为黑色,那么棋盘上剩余的白色就比黑色多,每个卡片只要放在棋盘上,必然覆盖一个白色和一个黑色。所以此情况不可以。

白色同理。至于别的情况为什么可以,很难证明,但可以大概想象出来。

View Code
#include <iostream>
#include
<cstdio>
#include
<cstdlib>
#include
<cstring>
usingnamespace std;

int main()
{
//freopen("t.txt", "r", stdin);
int t;
scanf(
"%d", &t);
for (int i =0; i < t; i++)
{
printf(
"Scenario #%d:\n", i +1);
int a, b, c, d;
scanf(
"%d%d%d%d", &a, &b, &c, &d);
if (((a + b) &1) == ((d + c) &1))
printf(
"0\n");
else
printf(
"1\n");
putchar(
'\n');
}
return0;
}

你可能感兴趣的:(poj)