题解:P12974 蒸蒸日上
__CrossBow_EXE__ · · 题解
神秘模拟题。
这道题唯一的难点在于如何计算位置距离。显然位置距离就是两点中间的间隔数。假设两个人位置为
剩下的考验语言知识,请看代码。
#include<bits/stdc++.h>
using namespace std;
int n;
int a,b,x,y;
string s1,s2;
int dis;
int dis1,dis2;//a算距离,b算距离
signed main(int argc,char *argv[]){
// freopen(".in","r",stdin);
// freopen(".out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0);cout.tie(0);
cin>>n;//按输入格式输入,注意不要输出多余内容
cin>>a>>x>>s1;
cin>>b>>y>>s2;
//先算出位置距离
dis=min(abs(a-b),n-abs(a-b));
dis1=dis2=dis;
//根据坐骑算出实际距离
if(s1=="+1") dis2++;
if(s1=="-1") dis1--;
if(s2=="+1") dis1++;
if(s2=="-1") dis2--;
//最后判断实际距离与武器攻击距离的关系,输出答案
if(x>=dis1) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
if(y>=dis2) cout<<"Yes"<<endl;
else cout<<"No"<<endl;
return 0;
}
/*
---INFORMATIONS---
TIME:2025-06-28 21:49:15
PROBLEM:P12974
CODE BY __CrossBow_EXE__ Luogu uid967841
*/