分析
这是真正的云南oi/px
我们需要考虑保留一段不降子序列
剩余的自由往前往后移动
所以dp一下即可
代码
#include<bits/stdc++.h>
using namespace std;
const int inf = 1e9+7;
int n,m,t,dp[110],a[110],pre[110];
int main(){
int i,j,k;
scanf("%d",&t);
while(t--){
scanf("%d",&n);
for(i=1;i<=n;i++)scanf("%d",&a[i]),dp[i]=inf,pre[i]=pre[i-1]+a[i];
a[n+1]=dp[n+1]=inf;
for(i=1;i<=n+1;i++)
for(j=0;j<i;j++)
if(a[j]<=a[i])
dp[i]=min(dp[i],dp[j]+pre[i-1]-pre[j]);
cout<<dp[n+1]<<"
";
}
return 0;
}