原题链接:https://vjudge.net/problem/UVA-11093
分类:贪心法
备注:简单思维题
#include<bits/stdc++.h>
using namespace std;
const int maxn=100001;
int t,n,p[maxn],q[maxn],vis[maxn];
int main(void){
//freopen("in.txt","r",stdin);
scanf("%d",&t);
for(int i=1;i<=t;i++){
scanf("%d",&n);
for(int i=0;i<n;i++)scanf("%d",&p[i]);
for(int i=0;i<n;i++)scanf("%d",&q[i]);
memset(vis,0,sizeof(vis));
printf("Case %d: ",i);
int flg=0;
for(int st=0;st<n;st++){
int now=p[st]-q[st],pos=(st+1)%n;
while(now>=0){
now+=p[pos]-q[pos];
pos=(pos+1)%n;
if(pos==(st+1)%n){
printf("Possible from station %d\n",st+1);
flg=1; break;
}
}
if(flg)break;
st=pos-1; if(vis[st])break;
vis[st]=1;
}
if(!flg)printf("Not possible\n");
}
return 0;
}