C. Minimizing the Sum

原题链接

题解

对于区间,其末尾,要么没有操作过,要么被最后一个元素往前操作,要么被前面的元素往后操作

code

#include<bits/stdc++.h>
using namespace std;

#define ll long long

ll a[300005];
ll dpl[300005][15]={0}, dpr[300005][15]={0}, dp[300005][15]={0};

int main()
{
    //ios::sync_with_stdio(false); cin.tie(0); cout.tie(0);

    ll t;
    cin>>t;

    while(t--)
    {
        ll n, k;
        cin>>n>>k;

        ll sum=0;
        for(ll i=1; i<=n; i++)
        {
            cin>>a[i];
            sum+=a[i];
        }

        for(ll i=1; i<=n; i++)
        {
            for(ll j=1; j<=k; j++)
            {
                if(i-j<=0) break;
                dpl[i][j]=dpl[i][j-1]+a[i-j]-a[i];
            }
        }

        for(ll i=n; i>=1; i--)
        {
            for(ll j=1; j<=k; j++)
            {
                if(i+j>n) break;
                dpr[i][j]=dpr[i][j-1]+a[i+j]-a[i];
            }
        }

        ll ans=0;
        for(int i=2;i<=n;i++)
        {
            for(int len=0;len<=k&&len<i;len++)
            {
                dp[i][len]=0;
                for(int r=0;r<=len;r++)
                {
                    dp[i][len]=max(dp[i][len],dp[i-r][len-r]+dpr[i-r][r]);
                    dp[i][len]=max(dp[i][len],dp[i-r-1][len-r]+dpl[i][r]);
                }
                ans=max(ans,dp[i][len]);
            }
        }
        cout<<sum-ans<<'\n';
    }
    return 0;
}

posted @   纯粹的  阅读(33)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示