Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
32041 baka24 【S】T2 C++ 运行出错 0 0 MS 88 KB 1677 2024-08-30 14:48:08

Tests(0/10):


#include<bits/stdc++.h> using namespace std; #define int long long #define pii pair<int,int> #define fr first #define sc second int read(){int x=0,f=1;char c=getchar();while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}x=c-'0';c=getchar();while(c<='9'&&c>='0'){x*=10;x+=c-'0';c=getchar();}return x*f;} const int MAXN=100010,N=110,inf=1000000000; int n,m,c,f[MAXN][N],f2[N][MAXN*10],a[MAXN],ans; void slv(){ n=read(),c=read(); for(int i=1;i<=n;i++)a[i]=read(),m=max(m,a[i]); if(m<=100){ for(int i=1;i<=n;i++){ int cnt=inf; for(int j=1;j<=m;j++){ cnt=min(f[i-1][j]-j*c,cnt); if(j>=a[i])f[i][j]=cnt+j*c+(j-a[i])*(j-a[i]); else f[i][j]=inf; } cnt=inf; for(int j=m;j>=a[i];j--){ cnt=min(cnt,f[i-1][j]+j*c); if(j>=a[i])f[i][j]=min(f[i][j],cnt-j*c+(j-a[i])*(j-a[i])); } } ans=inf; for(int i=a[n];i<=m;i++)ans=min(ans,f[n][i]); } else{ for(int i=1;i<=n;i++){ int cnt=inf; for(int j=1;j<=m;j++){ cnt=min(f2[i-1][j]-j*c,cnt); if(j>=a[i])f2[i][j]=cnt+j*c+(j-a[i])*(j-a[i]); else f2[i][j]=inf; } cnt=inf; for(int j=m;j>=a[i];j--){ cnt=min(cnt,f2[i-1][j]+j*c); if(j>=a[i])f2[i][j]=min(f2[i][j],cnt-j*c+(j-a[i])*(j-a[i])); } } ans=inf; for(int i=a[n];i<=m;i++)ans=min(ans,f2[n][i]); } printf("%lld",ans); } signed main(){ slv(); return 0; }


测评信息: