CodeForces 55 C.Pie or die(博弈)

CF地址:https://codeforces.com/problemset/problem/55/C

Cf访问慢的可以去洛谷:https://www.luogu.com.cn/problem/CF55C

题意:

Volodya和Vlad在玩下面的这个游戏。这里有k个派,分布在n×m的板子上。每一回合Volodya移动一个派到这个派边界的格子,如果这个派在板子的边界,Volodya就可以把它移出板,得到这个派并且获胜。在Volodya移动之后,Vlad在板的边界放一个长度为1的挡板,然后Volodya就不能把派从挡住的边移出。 请问,Volodya会赢得这次比赛吗?(我们假设两个玩家都无比聪明)

解析:

很容易想到,肯定是让某个棋子往最近的边走,如果下一步被封,就往角落走,因为角落含有两个出口,只要在两个出口封掉之前到达,一定能赢。

所以Vlad要先把四个角各封上一条边,然后再封掉派离得最近的一边。一共5步。

所以只要Volody能在5步以内走到边界,那么肯定有一个出口在封掉之前能出去。

#include<bits/stdc++.h>
#include<cmath>
#include<map>
#define pb push_back
using namespace std;
typedef long long ll;
const int maxn=2e5+10;
int mp[105][105];
int n,m,k;
int main()
{
    int x,y;
    cin>>n>>m>>k;
    int ok = 0;
    for(int i=1;i<=k;i++)
    {
        cin>>x>>y;
        if(x<=5||y<=5||(n-x)<=4||(m-y)<=4)
            ok=1;
    }
    if(ok)
        cout<<"YES"<<endl;
    else
        cout<<"NO"<<endl;
}
原文地址:https://www.cnblogs.com/liyexin/p/13799146.html