zoukankan      html  css  js  c++  java
  • HDU4296 2012ACM成都赛区网络赛 Buildings

    大意是盖楼的时候先把每个楼层都建好,再以一种最忧的次序堆起来,使各层楼中最大的PDV最小。

    最底层的PDV = 上面各层的w之和 - 最底层的s = 所有楼层的w之和 - 最底层的(w+s);

    所以,楼层(w+s)越大的越靠下,这样就是最优解。且最大的PDV就是底层的PDV。

    比赛的时候没过,忘了溢出的情况,注意要用__int64。

    #include<iostream>
    //#include<fstream>
    #include<algorithm>
    using namespace std;
    
    int cmp(int& x,int& y)
    {
        return y < x;
    }
    
    int main()
    {
        //ifstream cin("in.txt");
        int n;        
        __int64 sumw,w,s,maxwei,wei;
        
        while (cin>>n)
        {            
            sumw = 0;                
            maxwei = 0;
    
            for(int i = 0;i < n; i ++)
            {
                cin>>w;    
                sumw += w;
                cin>>s;
                wei = w + s;                
                if(wei > maxwei) maxwei = wei;
            }        
            
            sumw -= maxwei;
            if(sumw >0) cout<<sumw<<endl;
            else cout<<0<<endl;            
        }
    }
    本博客所有博文,若无专门说明皆为原创,转载请注明作者和出处!
  • 相关阅读:
    伪多项式时间 Pseudo-polynomial time
    Aho-Corasick算法
    写给十八岁以下的你
    网络流算法
    Java static关键字
    带有负权边的最短路径问题
    Miller_Rabin(米勒拉宾)素数测试
    关于同余与模运算的总结
    UVa1585
    UVa修改版02
  • 原文地址:https://www.cnblogs.com/ifinver/p/2706472.html
Copyright © 2011-2022 走看看