WA on #13 求调
查看原帖
WA on #13 求调
435347
cyq32ent楼主2024/9/28 14:50
#include<bits/stdc++.h>
using namespace std;
int64_t n,h,t,x[1<<20],p[1<<20],c[1<<20],q[1<<20],r[1<<20],f[1<<20],Q[1<<20],a=1e18;
auto d(int i,int j){
	return q[i]==q[j]?1e18:1.*(f[i]+r[i]-f[j]-r[j])/(q[i]-q[j]);
}
int main(){
	cin>>n;for(int i=1;i<=n;q[i]=q[i-1]+p[i],r[i]=r[i-1]+x[i]*p[i],i++)cin>>x[i]>>p[i]>>c[i];
	auto y=[&](int i){return f[i]+r[i];};
	for(int i=1;i<=n;Q[++t]=i++){
		while(h<t&&d(Q[h+1],Q[h])<x[i])h++;
		f[i]=f[Q[h]]+x[i]*(q[i]-q[Q[h]])-r[i]+r[Q[h]]+c[i];
		while(h<t&&d(Q[t],Q[t-1])>d(i,Q[t]))t--;
	}
	a=f[n];while(!p[n])a=min(a,f[--n]);
	cout<<a;
	return 0;
}
2024/9/28 14:50
加载中...