75分乞求大佬
查看原帖
75分乞求大佬
194200
gcs1237楼主2020/5/14 13:19
#include<bits/stdc++.h>
using namespace std;
double d1,c,d2,dn[13],pn[13],ans,dmax,pine=1001;
int n,hx,h;
int main() {
	cin>>d1>>c>>d2>>pn[0]>>n;
	dn[n+1]=d1;
	dmax=c*d2;
	if(n==0) {
		if(dmax>d1) {
			printf("%.2f",(d1/d2*pn[0]));
		} else {
			cout<<"No Solution";
		}
		return 0;
	}
	for(int i=1; i<=n; i++) {
		cin>>dn[i]>>pn[i];
	}
	for(int i=1; i<=n+1; i++) {
		if(dn[i]-dn[i-1]>dmax) {
			cout<<"No Solution";
			return 0;
		}
		if(pn[i]<pine) {
			pine=pn[i];
			h=i;
		}
		if(pn[i]<=pine&&pn[i]<=pn[hx]) {
			ans+=(dn[i]-dn[hx])/d2*pn[hx];
			hx=i;
			pine=1001;
		}
		if(dn[i+1]-dn[hx]>dmax) {
			if(pine==1001) {
				ans+=(dn[i]-dn[hx])/d2*pn[hx];
				hx=i;
			} else {
				ans+=(dn[h]-dn[hx])/d2*pn[hx]+(dn[i]-dn[h])/d2*pn[h];
				pine=1001;
				hx=i;
			}
		}
	}
	printf("%.2f",ans);
	return 0;
}
2020/5/14 13:19
加载中...