题解 P7354 【「PMOI-1」立方骑士】
偷偷来水篇题解(((
注:在本篇题解中,
根据题目,可以得到国王所在的位置分为三种情况:
- 在角上
- 在边上
- 在中间
因此我们分别考虑这三种情况所需要的骑士个数。
在角上
如图,可以看到国王有三个位置可以走,两个骑士就可以封住。
在边上
如图,国王有五个位置可以走,要用三个骑士。
在中间
如图,八个位置共需四个骑士,其中国王无法吃掉蓝色和绿色的骑士,因为不论国王往左还是往右移动橙色骑士都会直接吃掉国王。
把上面的规律总结一下,
代码实现直接分类讨论会比找规律好写一点,所以这里写的是分类讨论qwq
#include<bits/stdc++.h>
using namespace std;
int t,m,n,x,y,ans;
int main()
{
scanf("%d",&t);
while(t--)
{
scanf("%d%d%d%d",&m,&n,&x,&y);
if((x==1&&y==1)||(x==m&&y==n)||(x==1&&y==n)||(x==m&&y==1)) cout<<"2"<<endl;//在角上
else if(x==1||x==m||y==1||y==n) cout<<"3"<<endl;//在边上
else cout<<"4"<<endl;//如果都不在就是在中间
}
return 0;
}
看题解不点赞就过分了啊qaq