zoukankan      html  css  js  c++  java
  • 洛谷P1873 砍树 二分答案

    洛谷P1873 砍树

    二分答案

    与原来的二分差不多
    O(n) 判断 当然也可以小优化一下 将 h 从高到低排序
    这题要用long long 感觉不大保险,于是全部都加了long long

     1 #include <cstdio>
     2 #include <cstring>
     3 #include <cmath>
     4 #include <cstdlib>
     5 #include <algorithm>
     6 #include <string>
     7 #include <iomanip>
     8 #include <iostream> 
     9 #define ll long long 
    10 using namespace std ; 
    11 
    12 inline ll read() 
    13 {
    14     char ch = getchar() ; 
    15     ll x = 0 , f = 1 ; 
    16     while(ch<'0'||ch>'9') { if(ch=='-') f = -1 ; ch = getchar() ; }
    17     while(ch>='0'&&ch<='9') { x = x*10 + ch - 48 ; ch = getchar() ; } 
    18     return x*f ; 
    19 }
    20 
    21 const int maxn = 1000011 ; 
    22 ll n,m,l,r,mid ;
    23 ll h[maxn] ; 
    24 
    25 inline bool check(ll x) 
    26 {
    27     ll sum = 0 ;
    28     for(int i=1;i<=n;i++) 
    29         if(h[ i ]>x) sum = sum + h[ i ]-x ; 
    30     return sum >= m ;
    31 }
    32 
    33 int main() 
    34 {
    35     n = read() ;   m = read() ;  
    36     for(int i=1;i<=n;i++) 
    37         h[ i ] = read(),r = max(r,h[ i ]) ;  
    38     l = 0 ;  
    39     while( l < r ) 
    40     {
    41         mid = (l+r+1) / 2 ; 
    42         if( check(mid) ) 
    43             l = mid ; 
    44         else 
    45             r = mid - 1 ; 
    46     }
    47     printf("%lld
    ",l ) ; 
    48     return 0 ; 
    49 }
  • 相关阅读:
    从当前url替换获得新的url
    访问者模式
    备忘录模式
    make makefile cmake qmake 区别
    qt编译过程
    tensorflow前处理
    tesorflow操作
    tensorflow的object_detection安装
    tensorflow 编译与训练
    tensorflow后处理
  • 原文地址:https://www.cnblogs.com/third2333/p/6944141.html
Copyright © 2011-2022 走看看