题意:环形跑道上有n个加油站,每个站可以加pi单位的油,从当前站开到下一站需要qi的油,问是否能够环游一圈。
思路:枚举。首先如果总需求量>总供给量,那么不可能。否则就枚举起点,如果油箱里的油不足以跑到下一站,就把下一站作为起点。
code:
//#inclide <bits/stdc++.h>
#include <cstdio>
using namespace std;
const int N=100005;
int p[N],q[N];
int main()
{
int T,n,s1,s2,s,ans;
scanf("%d",&T);
for (int ca=1;ca<=T;ca++)
{
scanf("%d",&n);
s1=s2=0;
for (int i=1;i<=n;i++) scanf("%d",&p[i]),s1+=p[i];
for (int i=1;i<=n;i++) scanf("%d",&q[i]),s2+=q[i];
printf("Case %d: ",ca);
if (s1<s2)
{
puts("Not possible");
continue;
}
ans=1;s=0;
for (int i=1;i<=n;i++)
{
s+=p[i];
s-=q[i];
if (s<0)
{
s=0;
ans=i+1;
}
}
printf("Possible from station %d\n",ans);
}
}