题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6383

题目就是让你求一个整数数组,在进行任意元素 + 1、 - 2 操作后,请问在所有可能达到的稳定数组中,拥有最大的『数组中的最小值』的那些数组,此值是多少呢?稳定数组是指数组中最大值 - 最小值 <= 1。

Sample Input

2
3
1 2 4
2
0 100000000
 

Sample Output

2
33333333
 
又想起那句“最大最小我tm一看就是二分”,然鹅知道是二分还是一脸懵逼QAQ
 

做法还是二分答案,怎么判断答案是否满足要求呢?让比答案小的数 + 1,比答案大的数 - 2,正解满足 + 1的数比 - 2的数多或者相等,如果不满足这个条件的话答案就不是数组中的最小值了。这里有一个坑点,就是在算 - 2的数有几个时一定要每加一个数 / 2,而不要算出num2之后再 / 2,因为这里存在奇数和偶数,仔细想想还是能明白的(在这里wa了2次 - -、)

#include <bits/stdc++.h>
using namespace std;
const int N = ;
typedef long long LL;
LL a[N];
LL n;
bool ok(LL x)
{
LL num1 = , num2 = ;
for(LL i = ; a[i] < x; i++)
{
num1 = num1 + (x - a[i]);//+1的个数
}
for(LL i = n - ; a[i] > x; i--)
{
num2 = num2 + (a[i] - x) / ;//-2的个数
}
if(num2 >= num1) return ;
return ;
}
int main()
{
LL t;
cin>>t;
//freopen("1.txt", "w", stdout);
while(t--)
{
scanf("%lld", &n);
for(LL i = ; i < n; i++)
{
scanf("%lld", &a[i]);
}
sort(a, a+n);
LL l = a[], r = a[n-];
while(l <= r)
{
LL mid = (l+r) >> ;
if(ok(mid))
l = mid + ;
else
r = mid - ;
}
printf("%lld\n", r);
}
}

【2018 “百度之星”程序设计大赛 - 初赛(B)-1004】p1m2(迷之二分)的更多相关文章

  1. HDU6383 2018 “百度之星”程序设计大赛 - 初赛(B) 1004-p1m2 (二分)

    原题地址 p1m2 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Total ...

  2. HDU6380 2018 “百度之星”程序设计大赛 - 初赛(B) A-degree (无环图=树)

    原题地址 degree Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)Tot ...

  3. 2018 “百度之星”程序设计大赛 - 初赛(A)

    第二题还算手稳+手快?最后勉强挤进前五百(期间看着自己从两百多掉到494名) 1001  度度熊拼三角    (hdoj 6374) 链接:http://acm.hdu.edu.cn/showprob ...

  4. 2018 “百度之星”程序设计大赛 - 初赛(A)度度熊学队列 list rope

    c++ list使用 #include <cstdio> #include <cstdlib> #include <cmath> #include <cstr ...

  5. 【2018 “百度之星”程序设计大赛 - 初赛(B)- 1001】degree

    Problem Description 度度熊最近似乎在研究图论.给定一个有 N 个点 (vertex) 以及 M 条边 (edge) 的无向简单图 (undirected simple graph) ...

  6. 2018 “百度之星”程序设计大赛 - 初赛(B)

    degree  Accepts: 1581  Submissions: 3494  Time Limit: 2000/1000 MS (Java/Others)  Memory Limit: 1310 ...

  7. HDU 6118 度度熊的交易计划 【最小费用最大流】 (2017"百度之星"程序设计大赛 - 初赛(B))

    度度熊的交易计划 Time Limit: 12000/6000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total S ...

  8. HDU 6119 小小粉丝度度熊 【预处理+尺取法】(2017"百度之星"程序设计大赛 - 初赛(B))

    小小粉丝度度熊 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  9. HDU 6114 Chess 【组合数】(2017"百度之星"程序设计大赛 - 初赛(B))

    Chess Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

随机推荐

  1. Codeforces Round #403 (Div. 2, based on Technocup 2017 Finals) B. The Meeting Place Cannot Be Changed

    地址:http://codeforces.com/contest/782/problem/B 题目: B. The Meeting Place Cannot Be Changed time limit ...

  2. ZOJ - 2587 Unique Attack (判断最小割是否唯一)

    题意:判断最小割是否唯一. 分析:跑出最大流后,在残余网上从源点和汇点分别dfs一次,对访问的点都打上标记. 若还有点没有被访问到,说明最小割不唯一. https://www.cnblogs.com/ ...

  3. IDEA 程序直接运行分析

    今天用IDEA运行SpringBoot程序,启动时始终报错说读取不到datasource的url配置. 分析代码的resources目录,是有配置文件的,配置也是正常的.如下图: 后来经人指点,是因为 ...

  4. TortoiseSVN_1.9.1.267_x64版本控制系统(针对Visual SVN Server)使用简单介绍

    软件下载地址:TortoiseSVN(SVN客户端)64位 V1.9.1.267简体中文免费版 软件详细操作说明:TortoiseSVN使用说明书(超详细) 文章内容:此篇是简单记录如何从Visual ...

  5. JavaScript 事件处理详解

    事件绑定与解绑: el.onEventName = function (){} document.getElementById("dom").onclick = function( ...

  6. jquery获取select选中项的文本

    使用jquery获取选中的值很简单 $("#select").val(); 但是获取选中的文本就没有这么直接了 $("#select").find(" ...

  7. 蓝桥杯练习——C++输出阶乘的最右边一位非零数

    #include<iostream> #include<iomanip> using namespace std; #define M 10000 #define N 1000 ...

  8. excel省市区三级分类级联

    前言:同事正好需要一个这样的地址类型给用户使用下载模板,改好地址再导入,这样就不会出现地址不匹配问题.所以就自己也整理了一套,以备不时之需. 效果展示: 图一:省级 图二:市级 图三:区级 图四:各乡 ...

  9. 解读:MR多路径输入

    对于在一个MR-Job中使用多路径作为输入文件,一般有三种方法: 1).多次调用,加载不同路径: import org.apache.hadoop.mapreduce.lib.input.FileIn ...

  10. LeetCode——Largest Rectangle in Histogram

    Question Given n non-negative integers representing the histogram's bar height where the width of ea ...