首页 > 其他分享 >DP之花店橱窗布置

DP之花店橱窗布置

时间:2023-05-31 19:03:01浏览次数:50  
标签:const 花店 橱窗 花瓶 int 有序 最优 include DP


题目:https://www.smartoj.com/p/1286


分析:花瓶是有序的,花也是有序的,这就保证了有序性,从而满足子解的全局最优,和无后效性.假设dp[i][j]表示前i

花,放在前j个花瓶里的最优值.


则有: 

DP之花店橱窗布置_i++


那么经过优化后得到:


DP之花店橱窗布置_#include_02



#include <iostream>
#include <string.h>
#include <stdio.h>

using namespace std;
const int N = 105;
const int INF = 1<<30;

int a[N][N];
int dp[N][N];
bool path[N][N];

void Print(int i,int j)
{
    if(i == 0) return;
    if(path[i][j])
    {
        Print(i-1,j-1);
        printf("%d ",j);
    }
    else Print(i,j-1);
}

int main()
{
    int F,V;
    while(~scanf("%d%d",&F,&V))
    {
        memset(path,0,sizeof(path));
        for(int i=1;i<=F;i++)
            for(int j=1;j<=V;j++)
                scanf("%d",&a[i][j]);
        for(int i=1;i<=F;i++)
            for(int j=0;j<=V;j++)
                dp[i][j] = -INF;
        for(int i=1;i<=F;i++)
        {
            for(int j=i;j<=V && i <= i + F;j++)
            {
                if(dp[i-1][j-1] + a[i][j] <= dp[i][j-1])
                    dp[i][j] = dp[i][j-1];
                else
                {
                    dp[i][j] = dp[i-1][j-1] + a[i][j];
                    path[i][j] = 1;
                }
            }
        }
        printf("%d\n",dp[F][V]);
        Print(F,V);
        puts("");
    }
    return 0;
}




标签:const,花店,橱窗,花瓶,int,有序,最优,include,DP
From: https://blog.51cto.com/u_16146153/6388998

相关文章

  • Codeforces Beta Round #2--B题 (DP)
    题目:Theleastroundway 1000*1000的方阵,每个格子有一个非负整数,现在要从左上走到右下,每次只能向下或者向右走。目标是使得所有走的格子里的数的乘积里,末尾0的个数最少,要求输出最有解和走法。不用怎么想也知道基本是个dp了,可以发现其实只有2和5的因子是有用的,但是如果状态同时记......
  • HDU4532(组合DP)
    题目:安排座位 解析:http://www.douban.com/note/269136472/ #include<iostream>#include<string.h>#include<stdio.h>usingnamespacestd;typedeflonglongLL;constLLMOD=1000000007;LLa[550];LLA[550];LLC[550][550];LLdp[55][550];voi......
  • 玩转服务器之网站篇:新手使用WordPress搭建博客和静态网站部署
    静态网站部署和WordPress搭建博客都是网站运营中常见的工作。静态网站是一种不需要服务器端脚本的网站形式,通常使用HTML、CSS和JavaScript等静态资源进行构建和显示。而WordPress是一款流行的博客系统,可以帮助用户快速搭建博客网站。在之前的玩转服务器系列文章里,我们介绍了如何构......
  • 报错问题谷粒商城 Oss endpoint can‘t be empty
    报错信息:Causedby:java.lang.IllegalArgumentException:Ossendpointcan’tbeempty.网上查了一下说有两种可能第一种是springboot和springcloud版本不对应第二种错误说的是oss.yml格式错误 建议优先检查yml格式我的因为那天改配置的时候被家里猫按到了,然后没有发现,检......
  • dp模板
    dp类题目总结(双序列和背包问题):1、双序列题目最长回文子串最长公共子序列(diff实现)编辑距离交叉字符串特点:(1)单字符串dp,用二维dp,i,j表示s[i:j+1](2)双字符串的,dp[i][j]表示s1[:i]和s2[:j]推导s1[i]s2[j]关系2、背包类DP优先使用dfs+cache,逼不得已改dp3、博弈类dp,用dfs+cache......
  • Gym - 101170A[DP+思维]
    题目链接:https://vjudge.net/problem/Gym-101170A 解题思路:首先要确定的是,改变次数最多不会超过2*n次,因为n最多40,所以我们只要改变每个数的前两个最高位,肯定可以让n个数有序。然后我们就可以想办法搞个DP[i][j]表示将前i个数变成有序花了j次的最小值。为什么是最小值呢,维护最小......
  • Codeforces #564 (Div. 2) D. Nauuo and Circle[树形DP]
    题目链接:http://codeforces.com/contest/1173/problem/D 解题思路:首先得知道按照圆周顺序的话,那么一颗子树必须存放在连续的一段区间里面,现在我们假设根节点是1,那么一颗为u做根节点的子树他的方案数就是各个儿子的方案数的乘积最后再乘以儿子个数+1(u节点本身)的排列方案数。所......
  • 4543: [POI2014]Hotel加强版[树形DP+长链剖分]
    题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id=4543 解题思路:长链剖分定义:f[i][j]表示以i为根节点的子树,有多少个节点和i的距离是j的.g[i][j]表示以i为根节点的子树,在子树外一个距离i为j的点可以跟i子树内的两个点组成两两相等的方案数.那么就有:f[u][j+1]+=f[v......
  • 插头DP 备忘
    插头DP备忘以前一直觉得没必要学,就是普通的状压,发现不学一下写起来有点难受的。最好的学习资料大概就是cdq的论文了。原文叫基于连通性状态压缩的动态规划问题。最常见的问题形式就是给个网格图,求某种回路或者类似的图形最优化或者计数。核心思想是把他转化为\(dp\),需要......
  • dp-runtime去Kafka依赖方案
    背景现有原生kafkaconnectruntime,在客户环境运行遇到诸多问题,问题列表如下:强依赖Kafka集群做任务分配、connector配置信息、connector状态管理、source进度维护等等当遇到数据量大、并行数多,topic数量较多时,可能引发kakfa集群的不稳定包括(节点宕机,controller切换等)从而引......