25分,求助
查看原帖
25分,求助
1175911
KY_ABC楼主2024/3/12 20:31
#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){
			cout<<"No Solution"<<endl;
			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);
			last = 0;
		}
		else{
			ans+=(c=last)*v[i];
			last = c-(d[j]-d[i])/d2;
		}
	}
	printf("%.21\n",ans);
	return 0;
} 
2024/3/12 20:31
加载中...