题干:

   第一行输入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 ;
}