蒟蒻刚学OI,求助
查看原帖
蒟蒻刚学OI,求助
305904
yezerui11楼主2023/8/13 23:04
#include<bits/stdc++.h>
using namespace std;
#define mkp make_pair
double mx,d,mn;
int n;
double l[100010],c[100010],ll;
double ans,now,nowl;
priority_queue<pair<double,double>,vector<pair<double,double> >,greater<pair<double,double> > >q;
int main()
{
	cin>>ll>>mx>>d>>c[0]>>n;
	l[n+1]=ll;
	for(int i=1;i<=n;i++){
	    cin>>l[i]>>c[i];
	}
	for(int i=0;i<=n;i++){
	    while(!q.empty()&&q.top().first>c[i]){
	        now-=q.top().first;
	        q.pop();
	    }
	    q.push(mkp(c[i],mx-now));
	    now=mx;
	    while(!q.empty()&&nowl<l[i+1]){
    	    pair<double,double>p=q.top();
    	    q.pop();
    	    if(p.second*d+nowl>l[i+1]){
    	        double k=1.0*(l[i+1]-nowl)/d;
    	        p.second-=k;
    	       // cout<<p.first<<' '<<k<<endl;
    	        ans+=1.0*k*p.first;
    	        now-=k;
    	        q.push(p);
    	        nowl=l[i+1];
    	        break;
    	    }else{
    	        nowl+=1.0*p.second*d;
    	        now-=p.second;
    	       // cout<<p.first<<' '<<p.second<<endl;
    	        ans+=1.0*p.first*p.second;
    	    }
	    }
	    if(nowl<l[i+1]){
	        cout<<"No Solution";
	        return 0;
	    }
	    cout<<ans<<endl;
	}
	cout<<fixed<<setprecision(2)<<ans;
	return 0;
}

一直75pts过不去

2023/8/13 23:04
加载中...