# オレンジの出荷 Oranges## 题面翻译## 题目描述CXR决定将收获的$n$个橙子分装进一些箱子内。在NXY的工厂中橙子排列在输送带上依次编号为$1n$。橙子$i1leq ileq n$的大小为$A_i$。由于分拣不方便同一个箱子内橙子的编号必须连续。一个箱子内最多可以装$m$个橙子。在一个箱子内装一些橙子的成本为$k+stimes a-b$。$k$是箱子本身的成本所有箱子的成本一样。$
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const int N=20005;
const int M=1005;
int n,m,k;
int a[N];
ll f[N][M],dp[N][M],minn[N][M],maxn[N][M];
int main(){
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=n;++i){
scanf("%d",&a[i]);
f[i][1]=a[i];
dp[i][1]=a[i];
minn[i][1]=a[i];
maxn[i][1]=a[i];
}
for(int i=2;i<=n;++i){
for(int j=2;j<=min(i,m);++j){
dp[i][j]=max(dp[i-1][j]+a[i],f[i-1][j-1]);
minn[i][j]=min(minn[i-1][j],a[i]);
maxn[i][j]=max(maxn[i-1][j],a[i]);
f[i][j]=min(f[i-1][j],dp[i][j]+1ll*k+j*1ll*(maxn[i][j]-minn[i][j]));
}
}
printf("%lld\n",f[n][m]);
return 0;
}
``
原文地址: https://www.cveoy.top/t/topic/dNVz 著作权归作者所有。请勿转载和采集!