1 条题解

  • 0
    @ 2026-5-5 16:10:29
    #include<bits/stdc++.h>
    #define int long long
    using namespace std;
    int const N=300010;
    int n,a,ans,top,d[N],c[N],s[N],p[N],q[N],f[N];
    signed main(){
    	ios::sync_with_stdio(0);
    	cin>>n>>a;
    	for(int i=1;i<=n;i++)
    		cin>>d[i]>>c[i],ans=max(ans,c[i]=a-c[i]),s[i]=s[i-1]+c[i];
    	for(int i=1;i<n;i++){
    		int t=s[i-1];
    		d[i]=d[i+1]-d[i];
    		for(;top&&d[i]>=d[q[top]];top--)
    			t=min(t,f[top]-d[q[top]]*d[q[top]]);
    		q[++top]=i;
    		ans=max(ans,s[i+1]-(p[top]=min(top>1?p[top-1]:LLONG_MAX,
    			f[top]=t+d[i]*d[i])));
    	}
    	cout<<ans<<"\n";
    }
    
    • 1

    信息

    ID
    6924
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者