zoukankan      html  css  js  c++  java
  • 刷表法动态规划: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;
    }
  • 相关阅读:
    springIOC 原理
    jeesite异步分页
    yum
    乐观锁原理
    equlas(),hashcode(),hashset,hashmap
    链接收藏
    java单词
    jeesite优化
    SailingEase .NET Resources Tool (.NET 多语言资源编辑器)转
    C#基本语法
  • 原文地址:https://www.cnblogs.com/rikka/p/7495758.html
Copyright © 2011-2022 走看看