P1854 花店橱窗布置

原题链接

题解

i 朵花的选择范围为 [i,mn+i] ,而它一定是由第 i1 朵花的某种选择继承而来的

code

#include<bits/stdc++.h>
using namespace std;
int n,m;
int dp[105][105]={0},pre[105][105]={0},a[105][105];
int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=m;j++) cin>>a[i][j];
    }


    for(int i=1;i<=n;i++)
    {
        for(int j=i;j<=m-n+i;j++)
        {

            int maxs=-2e9,index=0;
            for(int k=i-1;k<j;k++)//注意这里是i-1不是1
            {
                if(dp[i-1][k]>maxs)
                {
                    maxs=dp[i-1][k];
                    index=k;
                }
            }


            if(i!=1)
            {
                dp[i][j]=a[i][j]+maxs;//有没有前缀
                pre[i][j]=index;//第i朵花放第j个花瓶里的最大值,第i-1朵花放的地方
            }
            else dp[i][j]=a[i][j];
        }
    }

    int index,maxs=-2e9;
    for(int i=n;i<=m;i++)
    {
        if(dp[n][i]>maxs)
        {
            maxs=dp[n][i];
            index=i;//找到最后一朵花放的地方
        }
    }

    stack<int> ans;
    ans.push(index);
    for(int i=n;i>=2;i--)
    {
        index=pre[i][index];
        ans.push(index);
    }

    cout<<maxs<<"\n";
    while(ans.size())
    {
        cout<<ans.top()<<" ";
        ans.pop();
    }
    return 0;
}

posted @   纯粹的  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示