zoukankan      html  css  js  c++  java
  • uva 10154

    题意:uva 10154 - Weights and Measures


    题意:有一些乌龟有一定的体重和力量,求摞起来的最大高度、力量必须承受其上面包含自己的所有的重量。


    分析:先按其能举起来的力量从小到大排序

    然后定义dp【i】 表示摞起来 i 仅仅乌龟的最小质量。

    然后转移就是每次用遍历O(n)的复杂度找最小的。然后记录。保存最大值就可以。


    AC代码:

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include <map>
    #include <cmath>
    #include <vector>
    #include <algorithm>
    using namespace std;
    const int N = 10050;
    struct Node
    {
        int w,pow;
    };
    vector<Node> v;
    int cmp(Node a,Node b)
    {
        if(a.pow!=b.pow)
            return a.pow<b.pow;
    }
    int dp[N];  //dp[i] 选出i个乌龟摞起来的最小重量
    int main()
    {
        Node x;
        while(~scanf("%d%d",&x.w,&x.pow)){
            x.pow-=x.w;
            v.push_back(x);
        }
        sort(v.begin(),v.end(),cmp);
        memset(dp,0x3f3f3f3f,sizeof(dp));
        int ans=0;
        dp[0]=0;
        for(int i=0;i<v.size();i++)
        {
             for(int  j=v.size()-1; j>=1; j--)
            {
                if( dp[j-1]<=v[i].pow)
                    dp[j] =min( dp[j], dp[j-1]+v[i].w);
                if( dp[j]<1000000000 )
                    ans =max( j,ans);
            }
        }
        printf("%d
    ",ans);
        v.clear();
        return 0;
    }
    


  • 相关阅读:
    top 命令
    通过公网访问内网的几种方式总结
    借助IDE到处Runnable JAR 的步骤
    Java SE 基础知识(String,Array)
    Java SE 基础知识(二)
    周记 2014.12.13
    nginx 总结
    在VPS上配置SS
    Markdown 语法手册
    ASCII码表
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/5402343.html
Copyright © 2011-2022 走看看