CF50A Domino piling 题解
使用尽可能多的2×1标准多米诺骨牌,在以下条件的限制下填充 M×N的矩形板:
1.每个多米诺骨牌完全覆盖两个方块。
2.无重叠。
3.每块都完全放在板上,允许接触板的边缘。
#include<iostream>
using namespace std;
int main(){
int m,n,t=0,Sn=0;
cin>>m>>n;
if(m%2==0){
t=1;
}
if(n%2==0){
t=2;
}
if(t==1){
Sn=n*(m/2);
}
else if(t==2) {
Sn=m*(n/2);
}
else {
Sn=m*((n-1)/2)+(m-1)/2;
}
cout<<Sn;
}
这里我们考虑我们可以分类讨论
我们看有两种情况,一种是当一条边为偶数的时候,我们就可以直接的放满,当全不为偶数的时候,我们就可以先横着填满n-1或者m-1个区域,预留出一行,竖着继续填。