• 刷表法动态规划:HOJ11391_Word Clouds Revisited


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

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

    于是,设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;
    }
  • 相关阅读:
    查看eclipse web项目中jsp编译后的servlet源文件【转】【JSP】
    综合实战--文件上传系统【JDBC&IO&Socket】
    002、使用webpack的各种loader处理文件
    001、node & webpack工程手动搭建
    000、GO之特别语法糖
    000、GO之深刻理解拷贝
    000、常见算法解析
    003、GO之并发
    002、GO之反射
    001、GO之指针转换
  • 原文地址:https://www.cnblogs.com/rikka/p/7495758.html
Copyright © 2020-2023  润新知