zoukankan      html  css  js  c++  java
  • 洛谷P1316 丢瓶盖 二分答案

    洛谷P1316 丢瓶盖
    二分答案
    二分距离
    判断能够取几个

     1 #include <bits/stdc++.h> 
     2 #define For(i,j,k) for(int i=j;i<=k;i++)
     3 using namespace std ; 
     4 
     5 const int N = 100011 ; 
     6 int n,k,mi,mx,mid,l,r ; 
     7 int last,sum ; 
     8 int pos[N] ; 
     9 
    10 inline int read() 
    11 {
    12     int x = 0 , f = 1 ; 
    13     char ch = getchar() ; 
    14     while(ch<'0'||ch>'9') { if(ch=='-') f = -1 ; ch = getchar(); } 
    15     while(ch>='0'&&ch<='9') { x = x * 10+ch-48 ; ch = getchar(); } 
    16     return x * f ; 
    17 }
    18 
    19 inline bool check(int mid) 
    20 {
    21     last = pos[ 1 ] ; 
    22     sum = 1 ; 
    23     For(i,2,n) 
    24         if( pos[ i ] - last >= mid ) 
    25             last = pos[ i ],sum++ ;  
    26     return sum>=k ; 
    27 }
    28 
    29 int main() 
    30 {
    31     n = read() ; k = read() ; 
    32     mx = mi = pos[ 1 ] = read() ; 
    33     For(i,2,n) 
    34     {
    35         pos[ i ] = read() ; 
    36         if( mi > pos[ i ] ) mi = pos[ i ] ; 
    37         if( mx < pos[ i ] ) mx = pos[ i ] ; 
    38     }
    39     sort(pos+1,pos+n+1) ; 
    40     l = 0 ;  r = mx - mi ; 
    41     while( l < r ) 
    42     {
    43         mid = ( l + r+1 ) >>1 ; 
    44         if(check(mid)) 
    45             l = mid ;  
    46         else
    47             r = mid-1 ; 
    48     }
    49     printf("%d
    ",l) ; 
    50     return 0 ; 
    51 }
  • 相关阅读:
    java Boolean和boolean的区别
    stack.isEmpty()和empty()
    mysql中文、英文别名排序问题,order by 关键字详解
    数组中array==null和array.length==0的区别
    7.9总结
    7.8总结
    6.25总结
    6.27总结
    6.29总结
    6.28总结
  • 原文地址:https://www.cnblogs.com/third2333/p/7215818.html
Copyright © 2011-2022 走看看