题目链接: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);
}
}

最新文章

  1. android模拟器没法通过localhost访问本地服务器的解决
  2. 《项目经验》--后台一般处理程序向前台JS文件传递JSON,JS解析JSON,将数据显示在界面--显示在DropDownList 或 显示在动态创建的table中
  3. virsh常用命令
  4. keepalived的安装和使用
  5. 移动平台WEB前端开发技巧
  6. 关于mssql数据库锁和事务隔离级别
  7. Dynamic Web Module 3.0 requires Java 1.6 or newer报错
  8. H.264 Transform
  9. 在ASP.NET MVC中使用IIS级别的URL Rewrite
  10. 批量修改安卓apk包名
  11. 多表连接的三种方式 HASH MERGE NESTED
  12. HDU6166-Senior Pan-Dijkstra迪杰斯特拉算法(添加超源点,超汇点)+二进制划分集合-2017多校Team09
  13. Java并发编程-线程可见性&amp;线程封闭&amp;指令重排序
  14. bat脚本:windows下一键启动zookeeper+kafka
  15. elfinder中通过DirectoryStream.Filter实现筛选隐藏目录(二)
  16. pthread_detach()与pthread_join的区别?
  17. Linux下 nfs部署
  18. Learning-Python【17】:包的导入使用
  19. grafna与饼状图
  20. swift--使用URLSession异步加载图片

热门文章

  1. Hive环境安装
  2. 【Linux学习】1.Linux基础知识
  3. 20144303《Java程序设计》第10周学习总结
  4. COGS314. [NOI2004] 郁闷的出纳员
  5. [翻译]解读CSS中的长度单位
  6. CNN卷积减少参数个数的理解(分为全连接到CNN三个层级)
  7. 一次http请求,谁会先断开TCP连接?什么情况下客户端先断,什么情况下服务端先断?
  8. Java Collections Framework 汇总
  9. 修改windows命令行字体
  10. gulp+es6构建页面