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