add oil

1.FaceDetect争取早日告一段落

2.HUM相关信息的收集

#include <bits/stdc++.h> using namespace std; struct Station { double d, price; }; bool cmp(const Station& a, const Station& b) { return a.d < b.d; } int main() { double D1, C, D2, P; int N; cin >> D1 >> C >> D2 >> P >> N; vector<Station> stations; stations.push_back({0.0, P}); // 添加起点 for (int i = 0; i < N; ++i) { double d, p; cin >> d >> p; stations.push_back({d, p}); } stations.push_back({D1, 0.0}); // 添加终点 sort(stations.begin(), stations.end(), cmp); // 检查是否无法到达 bool possible = true; for (int i = 1; i < stations.size(); ++i) { if (stations[i].d - stations[i-1].d > C * D2) { possible = false; break; } } if (!possible) { cout << "No Solution" << endl; return 0; } double current_oil = 0.0; double ans = 0.0; int i = 0; int n = stations.size(); while (i < n - 1) { // 未到达终点 // 寻找下一个价格更低的加油站 int j = -1; for (int k = i + 1; k < n; ++k) { if (stations[k].price < stations[i].price) { j = k; break; } } if (j == -1) j = n - 1; // 没有找到更低的,设为终点 double distance = stations[j].d - stations[i].d; double need = distance / D2; if (current_oil >= need) { current_oil -= need; i = j; } else { double add = need - current_oil; double max_add = C - current_oil; if (add <= max_add) { ans += add * stations[i].price; current_oil += add; } else { ans += max_add * stations[i].price; current_oil = C; } // 行驶到下一个加油站i+1 distance = stations[i+1].d - stations[i].d; double used = distance / D2; current_oil -= used; i++; } } printf("%.2f\n", ans); return 0; }
03-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值