【DP】洛谷 P1854 花店橱窗布置

摘要:
你们好啊,我又回来了。P1854这是一道动态规划题。我这里介绍一下这题正解-˃dp。其实很显然的吧........这个题,我们考虑我们考虑用f[i][j]f[i][j]来表示第i束花插在第j个花瓶里时的最优解。故而可以推出dp[i][j]=max+a[i][j];所以不就是几个循环的事吗逃】放完整代码(已AC)有极少注释#include#include#include#include#includeusingnamespacestd;intf,v,ans;intz[101][101],g[101][101],b[101][101];//表示,前i的花放在前j的瓶;在g中i-1的位置intd[101];intmain(){scanf;forforscanf;forg[1][i]=z[1][i];forfor//第j个for//第i-1束花的位置if{g[i][j]=g[i-1][k]+z[i][j];b[i][j]=k;//等候i-1}intsum=0,max=-2147483647;for{if{max=g[f][i];sum=i;}}cout˂˂max˂˂endl;for{d[i]=sum;sum=b[f-i+1][sum];}forcout˂˂d[i]˂˂endl;return0;}变量名过丑,请自行脑补。

你们好啊,我又回来了。P1854这是一道动态规划题。

还是先放题目,防止走错》》》

【DP】洛谷 P1854 花店橱窗布置第1张【DP】洛谷 P1854 花店橱窗布置第2张

这次先放数据,上次就忘了..........


其实我们看见数据只有100,其实就可以考虑瞎搞,什么记忆化搜索,题解还有人求最长路,闲的无聊你可以自己尝试。

我这里介绍一下这题正解 -> dp。

其实很显然的吧........

这个题,我们考虑我们考虑用f[i][j]f[i][j]来表示第i束花插在第j个花瓶里时的最优解(即最大的美学值)。

故而可以推出dp[i][j]=max(dp[i-1][1],dp[i-1][2], ........ ,dp[i-1][j-1])+a[i][j];

所以不就是几个循环的事吗 逃】


放完整代码(已AC)有极少注释

#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>#include<cmath>
using namespacestd;

intf,v,ans;
int z[101][101],g[101][101],b[101][101];
//表示,前i的花放在前j的瓶;在 g中i-1的位置 
int d[101];

intmain()
{
    scanf("%d%d",&f,&v);
    for(int i=1;i<=f;i++)
        for(int j=1;j<=v;j++) 
            scanf("%d",&z[i][j]);
    for(int i=1;i<=v-f+1;i++) g[1][i]=z[1][i];
    for(int i=2;i<=f;i++) 
        for(int j=i;j<=v-f+i;j++)//第j个 
            for(int k=i-1;k<=j-1;k++)//第i-1束花的位置
                if(g[i-1][k]+z[i][j]>g[i][j])
                {
                    g[i][j]=g[i-1][k]+z[i][j];
                    b[i][j]=k;//等候i-1 
}
    int sum=0,max=-2147483647;
    for(int i=f;i<=v;i++) {
        if(g[f][i]>max) {
            max=g[f][i];
            sum=i;
        }
    }
    cout<<max<<endl;
    for(int i=1;i<=f;i++)  {
        d[i]=sum;
        sum=b[f-i+1][sum];
    }
    for(int i=f;i>=1;i--) cout<<d[i]<<endl;
    return 0;
}

变量名过丑,请自行脑补。

谢谢观看。

免责声明:文章转载自《【DP】洛谷 P1854 花店橱窗布置》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇MSBuild version 与 ToolsVersion 的区别editplus 快捷键下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Rabbit的工作(1) (dP)

题目:题目链接 一个人工作时越工作越累,连续工作k天每天消耗体力为k,并且他最多消耗m的体力,当他休息一天后就可以恢复所有体力。在公司工作,给出一个字符01串,s[i]=0时表示第i天公司放假,他休息。s[i]=1时他可以自由选择休息还是工作。问这个人最多工作多少天? dp题。用dp[i][j][k]表示前i天工作j天且最近连续工作k天的最小花费。s[...

[算法模板]动态规划—斜率优化

[算法模板]动态规划—斜率优化本文全文引自Xing-Ling,感谢Xing-Ling提供markdown源码。 【学习笔记】动态规划—各种 ( ext{DP}) 优化 【前言】 第一次写这么长的文章。 写完后感觉对斜优的理解又加深了一些。 斜优通常与决策单调性同时出现。可以说决策单调性是斜率优化的前提。 斜率优化 (DP),顾名思义就是利用斜率相关性质对...

题目:[NOIP1999]拦截导弹(最长非递增子序列DP) O(n^2)和O(n*log(n))的两种做法

题目:[NOIP1999]拦截导弹 问题编号:217 题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统。但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度。某天,雷达捕捉到敌国的导弹来袭。由于该系统还在试用阶段,所以只有一套系统,因此有可能不能拦截所有的导弹。 输入格式 输入数据为两...

Android 一种非常好用的Android屏幕适配

前言 网上关于屏幕适配的文章已经铺天盖地了,为什么我还要讲?因为网上现在基本都是使用px适配,即每种屏幕分辨率的设备需要定义一套dimens.xml文件。再加上有些手机还有虚拟按键(例如华为),这样就还需要每个有虚拟按键的设备加多一套dimens.xml文件,再加上平板那些你会发现dimens.xml文件所占的体积已经超过2M了!这绝对不是我们想要的。...

leetcode每日一题(2020-07-18):97. 交错字符串

题目描述:给定三个字符串 s1, s2, s3, 验证 s3 是否是由 s1 和 s2 交错组成的。 今日学习:1.遇到字符串,多想想前缀和以及动规2.滚动数组优化:只和当前以及上一状态有关的可以进行空间优化 题解:1.我想的稍微复杂一点的dp2.官方dp3.优化dp /** * @param {string} s1 * @param {string}...

AcWing 2879. 画中漂流(简单DP)

在梦境中,你踏上了一只木筏,在江上漂流。 根据对当地的了解,你知道在你下游 D 米处有一个峡谷,如果你向下游前进大于等于 D 米则必死无疑。 现在你打响了急救电话,T 秒后救援队会到达并将你救上岸。 水流速度是 1 米/秒,你现在有 M 点体力。 每消耗一点体力,你可以划一秒桨使船向上游前进 1 米,否则会向下游前进 1 米(水流)。 M 点体力需在救援队...