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;
}