题解:P12974 蒸蒸日上

· · 题解

前言

不要以为你有神武将你就可以乱诬蔑人,中间忘了,三国杀,就是氪佬享有最高权力,中间忘了,但是,群众的眼睛是雪亮的!

如果你用一堆我看不懂的技能秒了我,会让全天下的平民玩家知道,三国杀的腐朽!

三国杀将会臭名昭著!

解法

模拟,首先先算出 A 和 B 之间的最短距离(顺时针和逆时针)然后加上加减马的情况,最后得出的距离如果大于武器攻击范围则输出 No 反之输出 Yes

(无端)

code

#include<bits/stdc++.h>
#define endl '\n'
#define r0 return 0
#define inf (0x7fffffff)
#define maxn (  +5)
#define int long long
using namespace std;
inline int read(){int x=0,f=1;char ch=getchar();while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}while (ch>='0'&&ch<='9'){x=x*10+ch-48;ch=getchar();}return x*f;}
int n,ax,ay,bx,by,bz,az;
signed main(){
    cin >> n >> ax >> ay >> az >> bx >> by >> bz;
    int s=min(abs(ax-bx),abs(ax+n-bx));
    if(s+(bz==1)-(az==-1)<=ay){
        cout << "Yes\n";
    }else{
        cout << "No\n";
    }
    if(s+(az==1)-(bz==-1)<=by){
        cout << "Yes\n";
    }else{
        cout << "No\n";
    } 
}