zoukankan      html  css  js  c++  java
  • CF1201C Maximum Median


    思路:二分 ;

    因为是要增大中位数,所以,我们发现,想要让中位数变大,就只能让中位数变成和后面的数一样大,而且想让它最大,于是就想到让该中位数在加完k后和后面的x个数相同
    当然如果可以让中位数和最后一个数相同时最好不过的

    代码来了

    #include <bits/stdc++.h>
    #define maxn 200010
    #define int long long 
    using namespace std ;
    int n , m , a[maxn] ;
    int check(int mid) {
    	int cnt = 0 ;
    	for(int i = n/2+1 ; i <= n ; i ++) {
    		if(a[i] > mid) return 1 ;
    		if(mid-a[i] > m-cnt) return 0 ;
    		cnt += mid - a[i] ; 
    	}
    	return 1 ;
    } 
    signed main () {
    	cin >> n >> m ;
    	for(int i = 1 ; i <= n ; i ++) {
    		cin >> a[i] ;
    	}
    	sort(a+1,a+1+n) ;
    	int l = 1 , r = 2100000010 ;
    	while(l < r) {
    		int mid = (l+r) >> 1 ;
    		if(check(mid)) {
    			l = mid + 1 ;
    		}else {
    			r = mid  ;
    		}
    	}
    	cout << r -1<< endl ;
    	return 0 ;
    }
    
  • 相关阅读:
    数据分析05 /pandas的高级操作
    ABP之应用服务(2)
    ABP之应用服务(1)
    ABP之仓储
    ABP之创建实体
    ABP之框架体系
    ABP之项目的搭建
    2018年,加油!!!
    WF的简单使用
    WCF之通信工厂的简单使用
  • 原文地址:https://www.cnblogs.com/lyt020321/p/11360348.html
Copyright © 2011-2022 走看看