• poj3045 Cow Acrobats(二分最大化最小值)


    https://vjudge.net/problem/POJ-3045

    读题后提取到一点:例如对最底层的牛来说,它的崩溃风险=所有牛的重量-(底层牛的w+s),则w+s越大,越在底层。

    注意范围lb=-INF。

     1 #include<iostream>
     2 #include<cstdio>
     3 #include<queue>
     4 #include<cstring>
     5 #include<algorithm>
     6 #include<cmath>
     7 #include<map>
     8 #define lson l, m, rt<<1
     9 #define rson m+1, r, rt<<1|1
    10 #define INF 0x3f3f3f3f
    11 typedef long long ll;
    12 using namespace std;
    13 typedef struct{
    14     ll w, s;
    15     ll sum;
    16 }Node;
    17 Node node[100010];
    18 ll n, sum=0;
    19 int C(int x)
    20 {
    21     ll maxm = -INF, _sum=sum;
    22     for(int i = 0; i < n; i++){
    23         ll tmp = _sum-node[i].sum;
    24         _sum -= node[i].w;
    25         if(tmp>x) return 0; 
    26     }
    27     return 1;
    28 }
    29 bool cmp(const Node a, const Node b)
    30 {
    31     if(a.sum != b.sum)
    32         return a.sum>b.sum;
    33     else return a.s>b.s;
    34 } 
    35 int main()
    36 {
    37     scanf("%lld", &n);
    38     for(int i = 0; i < n; i++){
    39         scanf("%lld%lld", &node[i].w, &node[i].s);
    40         node[i].sum = node[i].w+node[i].s;
    41         sum += node[i].w; 
    42     }
    43     sort(node, node+n, cmp);
    44     ll lb=-INF, ub=INF;
    45     while(ub-lb>1){
    46         ll mid = (lb+ub)>>1;
    47         if(C(mid)){
    48             ub = mid;
    49         }
    50         else lb = mid;
    51     }
    52     printf("%lld
    ", ub);
    53     return 0;
    54 }
  • 相关阅读:
    02-scrapy安装及目录结构
    drf结合sql server搭建后台管理系统
    drf连接sqlserver数据库
    drf xadmin
    drf goods设计
    drf user models设计
    什么是全文检索
    周进度总结
    程序员修炼之道阅读笔记(四)
    周进度总结
  • 原文地址:https://www.cnblogs.com/Surprisezang/p/9077323.html
Copyright © 2020-2023  润新知