题解
2025-10-04 12:38:24
发布于:广东
3阅读
0回复
0点赞
#include<iostream>
#include<stdio.h>
using namespace std;
struct node{
double place,price;
};
node a[12];
int main(){
double da,c,db,p,ans = 0.0,last = 0.0;
int n;
cin >> da >> c >> db >> p >> n;
for(int i = 1;i <= n;i++){
cin >> a[i].place >> a[i].price;
}
a[0] = {0,p};
a[++n] = {da,0};
for(int i = 1;i <= n;i++){
if(a[i].place - a[i - 1].place > c * db){
cout << "No Solution";
return 0;
}
}
int j;
for(int i = 0;i < n;i = j){
for(j = i + 1;j <= n;j++){
if(a[j].place - a[i].place > c * db){
j--;
break;
}
if(a[j].price < a[i].price){
break;
}
}
if(a[j].price < a[i].price){
ans += ((a[j].place - a[i].place) / db - last) * a[i].price;
last = 0;
}else{
ans += (c - last) * a[i].price;
last = c - (a[j].place - a[i].place) / db;
}
}
printf("%.2lf",ans);
return 0;
}
这里空空如也







有帮助,赞一个