75分,悬赏关注一个先到先得
查看原帖
75分,悬赏关注一个先到先得
1175911
KY_ABC楼主2024/8/15 19:19
#include <bits/stdc++.h>
using namespace std;

double d1,c,d2,p,d[10010],v[10010],last,ans;
int n;
int main(){
	cin>>d1>>c>>d2>>p>>n;
	for(int i = 1;i<=n;i++){
		cin>>d[i]>>v[i];
	}
	d[n+1] = d1;
	v[0] = p;
	for(int i = 1;i<=n;i++){
		if(d[i+1]-d[i]>c*d2){
			printf("No Solution\n");
			return 0;
		}
	}
	int j;
	for(int i = 0;i<=n;i = j){
		for(j = i+1;j<=n+1;j++){
			if(d[j]-d[i]>c*d2){
				j--;
				break;
			}
			if(v[j]<v[i]){
				break;
			}
		}
		if(v[j]<v[i]){
			ans+=((d[j]-d[i])/d2-last)*v[i];
			last = 0;
		}
		else{
			ans+=(c=last)*v[i];
			last = c-(d[j]-d[i])/d2;
		}
	}
	printf("%.2f\n",ans);
	return 0;
} 
2024/8/15 19:19
加载中...