hdu6147 模拟

来源:互联网 发布:网络隐私权的法律规定 编辑:程序博客网 时间:2024/06/07 14:00
众所周知,度度熊最近沉迷于 Pokémon GO。




由于太过沉迷,现在它只能按照游戏内置的指令行走了:对,简直就像一个现实中的Pokémon!

游戏内置的指令实际上可以抽象成一种:保持现在的朝向前行X米,然后右转。度度熊相信,只要遵循这个指令,它就一定可以抓到最珍奇的精灵球。

但不幸的是,这个指令并不是很有可信度,有时会引导度度熊走回原来的位置。现在它想知道,在第几条指令时它第一次回到已经走过的位置?如果这种情况没有发生,请输出 “Catch you”。
 

Input
第一行为T,表示输入数据组数。

每组数据的第一行包含一个数N,表示指令长度。接着的一行包含N个数字Xi,表示第i个指令中前行的距离。

● 1≤T≤100

● 1≤N≤1 000 000

● 1≤Xi≤1 000 000 000
 

Output
对每组数据输出第一次回到已经走过的位置时的指令下标i (1≤i≤N)。

如果这种情况没有发生,请输出 “Catch you”。
 

Sample Input
342 2 2 242 1 3 152 1 3 1 3
 

Sample Output
4Catch you

5

模拟判断情况

三种情况:

if (a[j]>=a[j-2]&&a[j-1]<=a[j-3]) {bj=j;break;}if ((a[j]+a[j-4])>=a[j-2]&&a[j-1]==a[j-3]){bj=j;break;}if (j>=6)if ((a[j]+a[j-4])>=a[j-2]&&(a[j-1]+a[j-5])>=a[j-3]&&a[j-3]>=a[j-1]&&a[j-2]>=a[j-4]){bj=j;break;}

#include<cstdio>#include<algorithm>#include<cstring>int t,n,a[1000001];int main(){scanf("%d",&t);for (int i=1;i<=t;i++){scanf("%d",&n);memset(a,0,sizeof(a));for (int j=1;j<=n;j++)scanf("%d",&a[j]);int bj=0;if (n<=3) {printf("Catch you\n");continue;}else{for (int j=4;j<=n;j++){if (a[j]>=a[j-2]&&a[j-1]<=a[j-3]) {bj=j;break;}if ((a[j]+a[j-4])>=a[j-2]&&a[j-1]==a[j-3]){bj=j;break;}if (j>=6)if ((a[j]+a[j-4])>=a[j-2]&&(a[j-1]+a[j-5])>=a[j-3]&&a[j-3]>=a[j-1]&&a[j-2]>=a[j-4]){bj=j;break;}}}if (bj==0) printf("Catch you\n");else printf("%d\n",bj);}}


原创粉丝点击