zoukankan      html  css  js  c++  java
  • HDU4296-ChengduOnling-贪心

    某人要搬砖盖一栋楼,有m块砖,每块有两个值w和s,表示重量和强度。楼盖好后每块砖有一个危险值,表示为此砖之上的砖的重量和减此砖的强度,即Σ0(j-1)w - sj。

    整体危险值是每块砖危险值的最大值。

    这道题当时没想明白就搜了题解,原来是很弱智的一道贪心题。

    可以证明,两块砖如果交换后使整体危险值不增加,当且仅当s+w不增加。于是按照s+w值排序,求出最大值即可。

     1 #include <algorithm>
     2 #include <cstring>
     3 #include <ctype.h>
     4 #include <cstdlib>
     5 #include <cstdio>
     6 #include <vector>
     7 #include <string>
     8 #include <queue>
     9 #include <stack>
    10 #include <cmath>
    11 #include <set>
    12 #include <map>
    13 
    14 using namespace std;
    15 
    16 int N,M,T;
    17 
    18 struct Node
    19 {
    20     int w,s;
    21     bool operator < (const struct Node &b) const {return (w+s) < (b.w+b.s);}
    22 }save[100010];
    23 
    24 int main()
    25 {
    26     while(~scanf("%d",&N))
    27     {
    28         for(int i=0;i<N;i++) scanf("%d %d",&save[i].w,&save[i].s);
    29         sort(save,save+N);
    30         long long sum = 0,ans = 0;
    31         for(int i=1;i<N;i++)
    32         {
    33             sum += save[i - 1].w;
    34             ans = max(ans,sum-save[i].s);
    35         }
    36         printf("%lld
    ",ans);
    37     }    
    38 }
  • 相关阅读:
    用户态切换到内核态的3种方式
    vim_action
    import date
    __sizeof__()
    classmethod staticmethod
    Java对对象的引用 不是 引用调用 而是按值引用 Java不存在引用调用
    多线程同步
    Does Hadoop require SSH?
    hdfs namenode出错
    软件项目的一致性语义描述
  • 原文地址:https://www.cnblogs.com/helica/p/4792833.html
Copyright © 2011-2022 走看看