给出你n * m的方阵 , 然后让你放置1 * 2的小矩形,可以水平放置,也可以竖直放置,保证n*m是偶数.问你是否可以放置k个水平的,剩下的竖直放置.
首先我们看题意,从中我们得到应该是模拟的题型,我们想把特殊的边界值找出来,
然后D2是让你把符合条件的一种画出来.
void solve()
{
scanf("%lld%lld%lld", &n, &m, &k);
if((k == 0 && n %2==0) || (k * 2 == n * m && m %2== 0))
{
puts("Yes");
return ;
}
if((k==0&&n%2==1)||(k*2==n*m&&m%2==1)) {
puts("No");
return ;
}
if(n == 1 || m == 1)
{
puts("No");
return;
}
if(n % 2 == 1)
{
ll num = m / 2;
if(k<num) puts("No");
else {
n--;
k-=num;
if(k%2) puts("No");
else puts("Yes");
}
}
else if(m%2==1)
{
ll sum=n*m/2;
ll num=n/2;
ll res=sum-num;
if(k%2||res<k) puts("No");
else puts("Yes");
}else {
if(k%2) puts("No");
else puts("Yes");
}
}
CF1551 Domino (easy version)(模拟)
原文:https://www.cnblogs.com/KingZhang/p/15054493.html