1 条题解
-
3
题目分析
问小苞从站点 11 开到站点 nn,至少要花多少钱加油?
题目要求要花最少的钱,实际上就是一个“贪心”的过程,在前 i 站里,哪站最便宜,就在那站把油买好。不过要注意,到第 i 站时,可能会有残余的油,要考虑这种情况。
话不多说,直接看代码。
代码
#include <bits/stdc++.h> #define ll long long using namespace std; int n,d,v[100005],a[100005]; ll asuml, // 已走路程 summ, // 总钱数 mina; // 到第 i 站时的最低价格 int main(){ cin >> n >> d; for(int i=1;i<n;i++) cin >> v[i],v[i]+=v[i-1]; for(int i=1;i<=n;i++) cin >> a[i]; mina=a[1]; for(int i=1;i<n;i++){ //cout << i << ' '; if(a[i]<mina) mina=a[i]; //cout << mina << " "; int xl=v[i]-asuml, // 还要走多远 ys=0;ys=xl/d; // 到下一站需买几升油 if(xl%d!=0) ys++; //cout << ys << "\n"; summ+=ys*mina; asuml+=ys*d; } cout << summ; return 0; }
感谢观看,麻烦点个赞
- 1
信息
- ID
- 15
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 7
- 标签
- 递交数
- 22
- 已通过
- 7
- 上传者