暑期个人赛--第十一场--E
2014-08-06 17:18
155 查看
E. 小妹妹去划船 2014新生暑假个人排位赛11
时间限制 1000 ms 内存限制 65536KB
题目描述
小妹妹和叔叔来到了小明湖畔划船,到了湖中间的时候,叔叔突然手一抖就把桨掉到了水里。叔叔对小妹妹说:“怎么办呀我们没办法划船了,我们是不是就只能这样子一直两个人呆在湖中央了呢~?”。 机智的小妹妹想了一会儿,她说:“我发现,靠风来吹我们的船也是可以动的哟~你说风什么时候能把我们吹回码头?” 这下次可难倒叔叔了,请你帮助他解决这个问题好不让小妹妹失望。 叔叔的船现在在sx,sy位置,而码头在ex,ey位置。 我们假设风只向东(E)南(S)西(W)北(N)四个方向吹,且每吹一次风:东风将船向x+1,y方向吹; 南风将船向x,y-1方向吹; 西风将船向x-1,y方向吹; 北风将船向x,y+1方向吹。 请问叔叔和小妹妹最早什么时间回到码头?注意,小妹妹的船是有锚的~她不希望船动的话叔叔就在第一时间把锚抛下去。
输入格式
输入包含多组数据。每组输入第一行包含五个整数,t,sx,sy,ex,ey,第二行包含t个字符,仅含'E','S','W','N'。坐标绝对值小于1000000000。t<=100000。输入保证起点重、终点坐标不相同。
输出格式
输出一个t表示最早到达码头的时间,如果到达不了则输出-1。
输入样例
5 0 0 1 1 SESNW
输出样例
4
赛中提交:WA WA WA WA AC
题目大意:
题目很好理解了,看题目就好
反省:
没有考虑好边界情况,
比如t为0的情况
起点和终点重合的情况
ac代码:
#include <iostream> #include <string.h> #include <stdio.h> #include <stdlib.h> #include <math.h> #include <string> #include <vector> #include <list> #include <map> #include <queue> #include <stack> #include <bitset> #include <algorithm> #include <numeric> #include <functional> #define maxn 500005 using namespace std; int main() { int t,sx,sy,ex,ey; while(scanf("%d %d %d %d %d",&t,&sx,&sy,&ex,&ey)!=EOF){ getchar(); char a[100005]; int dx=ex-sx,dy=ey-sy; if(!t){ if(dx||dy){ printf("-1\n"); continue; } else{ printf("0\n"); continue; } } scanf("%s",a); if(!dx&&!dy){ //printf("%s\n",a); printf("0\n"); continue; } else if(abs(dx)>t||abs(dy)>t){ //printf("%s\n",a); printf("-1\n"); continue; } bool flag=false; for(int i=0;i<t;i+=1){ int x,y; //printf("i=%d aaaa %c\n",i,a[i]); if(a[i]=='E'){ x=1,y=0; } else if(a[i]=='S'){ x=0,y=-1; } else if(a[i]=='W'){ x=-1,y=0; } else if(a[i]=='N'){ x=0,y=1; } if(abs(dx-x)<abs(dx)||abs(dy-y)<abs(dy)){ dx-=x,dy-=y; } if(!dx&&!dy){ flag=true; printf("%d\n",i+1); break; } } if(!flag){ printf("-1\n"); } getchar(); } return 0; }
相关文章推荐
- 暑期个人赛--第十一场--C
- 暑期个人赛--第十一场--D
- 暑期个人赛--第十一场--B(字符串哈希 Karp-Rabin)
- 暑期个人赛第二场
- 暑期个人赛--第一场--E
- 暑期个人赛--第二场--D--every SG(重)
- 暑期个人赛--第二场--C
- HPU-ACM暑期培训第2周14级个人赛:Problem D【贪心】
- 暑期个人赛--第二场--A
- 暑期个人赛--第三场--E(待A)
- 2014/08/2 暑期个人赛二(每周)
- 2017暑期ACM俱乐部个人训练赛第3场
- 2017暑期ACM俱乐部个人训练赛第2场
- 2017暑期ACM俱乐部个人训练赛第5场 G.礼物 (矩阵快速幂)
- HPU-ACM暑期培训第2周14级个人赛:Problem C
- 暑期个人赛--第二场--B
- 暑期个人赛--第三场--E(待A....)
- 【个人感悟】暑期总结与感想
- 暑期个人赛--第四场--E(待A)
- 暑期个人赛--第九场--A