题目大意,给若干方块,让把方块拍成若干行,使得最终高度最小。其中,每行有宽度限制,高度为每行中最高的箱子的高度。

于是,很直观的认为,这个题可能也许大概应该是个动态规划的题。

于是,设DP[K]为K及K以后的所有箱子组成的集合,以K为开头的最小值。

于是可以对这个状态进行状态转移,最终输出DP[0]为答案。

AC代码如下:

#include<iostream>
#include<stdio.h>
#include<math.h>
#include<vector>
#include<string.h>
#include<string>
#include<set>
#include<queue>
#include<map>
#include<algorithm> using namespace std;
const long long MAXN=5233;
const long long INF=1e9+233; long long dp[MAXN];
pair<long long ,long long> p[MAXN];
long long n,c; void init()
{
    cin>>n>>c;
    for(int i=0;i<n;++i)
    {
        cin>>p[i].second>>p[i].first;
        dp[i]=0;
    }
    for(int i=n-1;i>=0;--i)
    {
        dp[i]=INF;long long ans=0;
        long long wid=0;
        for(int j=i;j<n;++j)
        {
                if(wid+p[j].second<=c)
                {
                    ans=max(ans,p[j].first);
                    dp[i]=min(ans+dp[j+1],dp[i]);
                    wid+=p[j].second;
                }else break;
        }
    }    
    cout<<dp[0]<<endl;
} int main()
{
    cin.sync_with_stdio(false);
    init();
    
    return 0;
}

刷表法动态规划:HOJ11391_Word Clouds Revisited的更多相关文章

  1. dp填表法,刷表法

    填表法:利用上一状态推当前 刷表法:利用当前推关联,利用刷表法较为便捷,向上边界较容易处理,处理在本次循环中的影响

  2. P7961 [NOIP2021] 数列 (DP 刷表法)

    (n<=30,是个多维的DP) v数组就是用来计算权值的,一共有m+1个.将S看做一个二进制数,按照题目S的定义,相当于在S的每一位可以随便+1(满足限制情况下),一共可以加n次. 我们来建立D ...

  3. dp的刷表法和填表法

    dp的刷表法和填表法 参考: 动态规划刷表法 - acmer_xue的博客 - CSDN博客http://blog.csdn.net/qq_30241305/article/details/52198 ...

  4. YUV420查表法高效、无失真的转换为RGB32格式

    YUV格式有两大类:planar和packed.planar的YUV格式,先连续存储所有像素点的Y,紧接着存储所有像素点的U,随后是所有像素点的V,这里所讲述的就是这中存储格式的:packed的YUV ...

  5. C#,Java,C -循环冗余检验:CRC-16-CCITT查表法

    C#代码 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ...

  6. C语言:十进制进制转换为其他进制(思想:查表法)

    // //  main.c //  Hex conversion // //  Created by ma c on 15/7/22. //  Copyright (c) 2015年 bjsxt. A ...

  7. 【NYOJ-187】快速查找素数—— 枚举法、筛选法、打表法

    快速查找素数 时间限制:1000 ms  |  内存限制:65535 KB 难度:3   描述 现在给你一个正整数N,要你快速的找出在2.....N这些数里面所有的素数. 输入 给出一个正整数数N(N ...

  8. 查表法计算CRC16校验值

    CRC16是单片机程序中常用的一种校验算法.依据所采用多项式的不同,得到的结果也不相同.常用的多项式有CRC-16/IBM和CRC-16/CCITT等.本文代码采用的多项式为CRC-16/IBM: X ...

  9. 最简单的CRC32源码-查表法

    这个算法是在逐BYTE法的基础上进行修改的,在上一篇文章里我们说过,如果不查表的话,逐BYTE法和逐BIT法没什么区别,现在我们就把这个算法写出来,注意在调用CRC校验函数前需要先调用表生成函数: u ...

随机推荐

  1. input累加赋值

    需求如下:第一个input添加字符到第二个input,第二个input需要累加. html: <tr> <td rowspan="2" class="D ...

  2. iOS开发ReactiveCocoa学习笔记(二)

    RAC 中常见的宏: 使用宏定义要单独导入 #import <RACEXTScope.h> 一. RAC(TARGET, [KEYPATH, [NIL_VALUE]]):用于给某个对象的某 ...

  3. mysql set names 命令和 mysql字符编码问题

    先看下面的执行结果: (root@localhost)[(none)]mysql>show variables like 'character%'; +--------------------- ...

  4. 进程的基础理论、并发(multiprocessing模块)

    一.粘包优化方案 之前我们解决粘包的方式是用struct模块来制作一个报头,但是这个解决的方案是有漏洞的,当我们需要传送的文件大于2g时将会报错.所以我们今天将用json来制作报头. from soc ...

  5. 洛谷P1397 [NOI2013]矩阵游戏(十进制矩阵快速幂)

    题意 题目链接 Sol 感觉做这题只要对矩阵乘法理解的稍微一点就能做出来对于每一行构造一个矩阵A = a 1      0 b列与列之间的矩阵为B = c 1      0 d最终答案为$A^{n - ...

  6. #include stdio.h(2)

    #include <stdio.h> //mian函数是程序的入口 int main() { /* //函数:是按一定的格式对一段代码的封装 //专门用来实现一功能的代码合集,可以重复使用 ...

  7. 为什么要使用Vuex?

    为什么要使用Vuex? 1. 假如不使用 1.1 父子组件依赖同一个state 1.2 兄弟组件依赖同一个state 2. 用了Vuex之后 3. 方便记忆和理解

  8. CSS中box-sizing属性的作用

    今天在项目中看到box-sizing这个属性,以前用过,但是不常用!注意,它是CSS3里的属性喔! W3C 盒子模型:标准盒模型,是指块元素box-sizing属性为content-box的盒模型.一 ...

  9. SpringBoot集成mybatis和mybatis generator

    利用搭建的基本的spring boot框架,集成 mybatis + generator 1.设置 maven 的相关配置: File  - setting - maven 设置 Maven home ...

  10. pat甲级1013

    1013 Battle Over Cities (25)(25 分) It is vitally important to have all the cities connected by highw ...