75pts 求调 必关注
查看原帖
75pts 求调 必关注
1188089
haokai_luo楼主2025/1/25 17:08
#include<bits/stdc++.h>
using namespace std;
struct node{
	double a,b;//a=距离,b=钱数 
}s[150];
double d1,c,d2,ans,l;//l=剩余的油 
long long n;
bool cmp(node x,node y){
	return x.a<y.a;
}
int main(){
	scanf("%lf%lf%lf%lf%lld",&d1,&c,&d2,&s[1].b,&n);n++;
	for(int i=2;i<=n;i++)scanf("%lf%lf",&s[i].a,&s[i].b);
	sort(s+1,s+1+n,cmp);s[n+1].a=d1;
	for(int i=1;i<=n;i++)s[i].a=s[i+1].a-s[i].a;
	for(int i=1;i<=n;i++)cout<<s[i].a<<" ";
	cout<<"\n";
	for(int i=1;i<=n;i++){
		if(l>=s[i].a*1.0/d2){l-=s[i].a*1.0/d2;continue;}
		if((c-l)*d2+l*d2<s[i].a){cout<<"No Solution";return 0;}
		ans+=s[i].a*1.0/d2*s[i].b;
		cout<<i<<"\n"<<ans<<' ';
		for(int j=i+1;j<=n;j++){
			if(s[i].b<=s[j].b&&l+s[j].a*1.0/d2<=c){
				l+=s[j].a*1.0/d2;
				ans+=s[j].a*1.0/d2*s[i].b;
			}else break;
		}
		cout<<ans<<"\n";
	}
	printf("%.2lf",ans);
	return 0;
} 
2025/1/25 17:08
加载中...