玄关,求助
  • 板块学术版
  • 楼主weiy_
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/2/5 11:21
  • 上次更新2025/2/5 15:31:47
查看原帖
玄关,求助
946180
weiy_楼主2025/2/5 11:21

RT,P2120仓库建设求条

#include<bits/stdc++.h>
using namespace std;
#define ll long long
const ll MAXN=1000005;
ll n,sumx[MAXN],p[MAXN],sump[MAXN],c[MAXN],sumxp[MAXN];
ll f[MAXN],q[MAXN],g[MAXN],h,t;
signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	cin>>n;
	for(long long i=1;i<=n;i++){
		cin>>sumx[i]>>p[i]>>c[i];
		sump[i]=sump[i-1]+p[i];
		sumxp[i]=sumxp[i-1]+sumx[i]*p[i];
	}
	for(long long i=0;i<=n;i++){
		while(h<t&&(g[q[h+1]]-g[q[h]])<=sumx[i]*(sump[q[h+1]]-sump[q[h]])) h++;
		f[i]=f[q[h]]-sumx[i]*sump[q[h]]+sumxp[q[h]]+c[i]+sumx[i]*sump[i]-sumxp[i];
		g[i]=f[i]+sumxp[i];
		while(h<t&&(g[q[t]]-g[q[t-1]])*(sump[i]-sump[q[t]])>=(g[i]-g[q[t]])*(sump[q[t]]-sump[q[t-1]])) t--;
		q[++t]=i;
	}
	for(int i=n;i>=0;i--){
		if(p[i]>0){
			cout<<f[i];
			return 0;
		}
	}
	return 0; 
}
2025/2/5 11:21
加载中...