题目链接:
http://codeforces.com/contest/750/problem/B
题解:
题目大意:一只北极熊接待游客游玩,游客会给出北极熊一些指令,但是北极熊会选择对你的指令按一定的条件进行选择(距离以及移动的方向),如果满足条件的话,北极熊就会带游客游玩( YES),不然不会(NO)。
条件如下:
1.如果在北极,那么就只能向南走。
2.如果在南极,那么就只能向北走。
3.最后要求回到北极。
本题需要仔细考虑的问题有很多,可以通过特殊判断来过题目。
比如:南北极的距离一共为20000,向南就加,向北就减,但是会出现负数的情况,所以,如果出现负数的话,那么这个方向一定是要向南的。
等等。
代码:
#include <cmath>
#include <cstdio>
#include <map>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
#define met(a,b) memset(a,b,sizeof(a))
#define inf 0x3f3f3f3f
typedef long long ll;
char s[4][10]={"North","South","East","West"};
string name;
int num;
int main()
{
int t;
scanf("%d",&t);
int flag=0;
int ans=0;
for(int i=1;i<=t;i++)
{
cin>>num>>name;
if(ans==20000)
{
if(name!="North")
flag=1;
}
if(ans>20000)
flag=1;
if(name=="South")
ans+=num;
if(name=="North")
ans-=num;
if(ans<0&&name!="South")
flag=1;
if(i==1)
{
if(name!="South")
flag=1;
}
if(i==t)
{
if(ans!=0||name!="North")
flag=1;
}
}
if(flag)
printf("NO\n");
else
printf("YES\n");
}