题干:

   第一行输入n,k,代表共有k个加油站,加满油后可以跑n公里。

   第二行k+1个数,其中前k个数代表加油站的位置,第k+1个数代表终点的位置。

   一辆车从坐标零点加满油后出发,问最少加几次油,可以到达终点?如果到达不了终点,输出"Impossible"

解题报告:

   直接贪心模拟就好了。

AC代码:

#include<bits/stdc++.h>
//大概是yxy的汽车加油那道题?
using namespace std;
int a[10000 + 5];
int main()
{
int n,k,flag =0 ;
cin>>n>>k;
for(int i = 1; i<=k+1; i++) {
scanf("%d",&a[i]);
if(a[i]>n) flag = 1;
a[i] = a[i] + a[i-1];
}
int cur = n,cnt = 0;
for(int i = 1; i<=k; i++) {
if(a[i] <= cur && a[i+1] > cur) {
cur = a[i] + n;
cnt++;
}
}
if(cnt != 0) {
printf("%d\n",cnt);
}
else {
printf("Impossible\n");
}
return 0 ;
}