2018 “百度之星”程序设计大赛 - 初赛(B)1004_bahuan1974的博客-程序员秘密

典型的最大化最小值问题,二分解决。

注意:肯定有解,所以最小的解就是数组中最小的值。

二分的时候注意l和r的取值,不然会WA或出不来结果,在这里l=mid+1,r=mid。

#include<bits/stdc++.h>
using namespace std;
#define inf 0x3f3f3f3f
#define ll long long
const int maxn=300005;
const double eps=1e-8;
const double PI = acos(-1.0);
#define lowbit(x) (x&(-x))
ll a[maxn],n,sum[maxn];
ll jud(int mid)
{
    ll pos=n+1;
    for(int i=1;i<=n;i++)
    {
        if(a[i]>mid)
        {
            pos=i;
            break;
        }
    }
    ll x,y=0;
    for(int i=pos;i<=n;i++)
    {
        y+=(a[i]-mid)>>1; //计算减了多少2
    }
    x=mid*(pos-1)-sum[pos-1];//计算加了多少1
    if(y<x)
    {
        return 0;
    }
    return 1;
}
int main()
{
    std::ios::sync_with_stdio(false);
    std::cin.tie(0);
    std::cout.tie(0);
    int t;
    cin>>t;
    while(t--)
    {
        memset(sum,0,sizeof(sum));
        cin>>n;
        for(int i=1;i<=n;i++)
        {
            cin>>a[i];
        }
        sort(a+1,a+n+1);
        for(int i=1;i<=n;i++)
        {
            sum[i]+=(sum[i-1]+a[i]);
        }
        ll l=a[1],r=a[n],ans=l;
        while(l<r)
        {
            int mid=(r+l)>>1;
            if(jud(mid))
            {
                l=mid+1;
                ans=mid;
            }
            else
            {
                r=mid;
            }
        }
        cout<<ans<<endl;
    }
    return 0;
}

 

转载于:https://www.cnblogs.com/dillydally/p/9567711.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/bahuan1974/article/details/102074489

智能推荐

利用java格里高利公式求圆周率_C语言用下列公式求pi的近似值,直到最后一项的绝对值小于1e-4为止:..._Cold flowers的博客-程序员秘密

C语言 输入精度e 和实数x,用下列公式求cos x 的近似值,精确到最后一项的绝对值小于e。#include//头文件置顶#includedoublefact(intn){\用下面的近似公式求Pi的近似值,直到第n项绝对值小于10~5为止.Pi/4=1-1/3+1/5-PrivateSubCommand1_Click()a=1Don=n+1m=2*n-1s=s+a*1/ma=-aLoo...

java中的参数传递_yubofighting的博客-程序员秘密

Parameter passing in Java - Java中的参数传递本文摘抄自国外的一个Java论坛,并由博主Shane依据原文对照翻译,如有问题或指教请与邮箱john[email protected]联系,谢谢!IntroductionThis page is gradually growing

一千行MySQL学习笔记(十一)_dingluan5041的博客-程序员秘密

--// 存储函数,自定义函数 ------------ 新建 CREATE FUNCTION function_name (参数列表) RETURNS 返回值类型 函数体 - 函数名,应该合法的标识符,并且不应该与已有的关键字冲突。 - 一个函数应该属于某个数据库,可以使用db_name.funciton_name的形式执行当前函数所属数据库,否则为...

[渝粤教育] 苏州大学文正学院 网络互联技术与实践 参考 资料_渝粤题库的博客-程序员秘密

教育-网络互联技术与实践-章节资料考试资料-苏州大学文正学院【】计算机网络互联设备随堂测验1、【单选题】网桥处理的是A、脉冲信号B、MAC 帧C、IP 包D、ATM 包参考资料【 】2、【单选题】交换机工作在 OSI 七层的哪一层A、一层B、二层C、三层D、三层以上参考资料【 】3、【单选题】在OSI的七层模型中集线器工作在哪一层A、物理层B、数据链路层C、网络层D、运输层参考资料【 】4、【单选题】以下哪个设备可以隔离广播A、HubB、

nginx php-fpm 配置https和http2_php-fpm http2_积木John的博客-程序员秘密

基础环境   阿里云ecs  ubuntu16.04  (默认的nginx的版本是1.10,支持http2)1. 安装nginx     apt-get install  nginx     之后即可用ip地址或者域名进行访问2. 添加server.conf     在nginx.conf  里面有配置文件   include /etc/nginx/co

分布式训练的GPU设置与分配(含源码可以直接测试)_gpu集群训练模型_ERROR_LESS的博客-程序员秘密

:输出日志信息,包含任务的布置情况 :自动指定设备布置任务 :设置可见设备,例如机器上有4个GPU,但设置只对一个GPU可见,则该进程无法访问其他设备 :获取所有物理设备(整块) :建立逻辑分区 :获取所有逻辑设备(分块) :设置内存自增长,需在程序开始的时候就被设置因此,本机有两块物理GPU先做一个默认gpu设置的实验,作为对照组。基础代码:容器内进行训练:默认情况下,此demo每步运行花费6ms。查看GPU占用情况:发现仅仅这一个进程就几乎占满GPU,对资源浪费十分严重。因此,进行

随便推点

微信硬件平台开发_weixin_30376163的博客-程序员秘密

开始编码前,我们必须要梳理一下设备直连微信硬件云(微信硬件服务器)的构架,这是非常有必要的工作,它让我们清晰的明白自己在直连构架中处于什么位置,需要编写那些代码,我在这里饶了很多弯路。需要了解完整信息请查看微信硬件平台http://iot.weixin.qq.com/wiki/new/index.html? ,个人感觉有些地方写的太过含糊。 这是微信硬件平台提供的构架图,有很多细节没...

通过web提权提升至服务器权限(ASP网站,利用系统溢出漏洞)整个过程记录_W小哥1的博客-程序员秘密

目标IP:192.168.106.130:82攻击IP:192.168.106.1原理:利用系统溢出漏洞提升第一步:访问目标网站第二步:假设已经成功将大马文件上传至目标网站,访问大马输入后门密码,登录第三步:执行系统命令ipconfig,如图所示执行后显示拒绝访问,如图所示用执行–CMD2测试结果,如图所示第三步:不能执行cmd命令,我们就自己上传首先查看一下目录权...

TCP/IP详解卷一学习笔记之一——Introduction_tcp/ip introduction_nanyanjimozhao的博客-程序员秘密

对TCP/IP从零学习,主要阅读原版,参考中文版与各种网上资料。TCP/IP的基本框架:应用层,传输层,网络层,链路层。应用层用于处理特定应用程序细节。传输层分为TCP与UDP其中UDP起对TCP的辅助作用,使数据传输更可靠,可以让应用层不必理会数据传输的这些细节。网络层分为IP,IDMP,ICMP,,次层为数据分组选路。链路层负责处理网络接口卡等一些物理接口细节。其中传输层与网络层最

关于jsp引入jquery插件时jquery插件报错解决方案_Luck Young的博客-程序员秘密

在一次web项目开发中,我的界面需要用到jquery插件,但是将jquery插件引入web项目时jquery文件出现了一个小红叉,点进jquery源码看是关于.catch的一个错误,应该是与jsp中的代码发生了冲突。我在网上搜寻了诸多例子,发现了下面这种解决方案,于是分享给大家:先看我的结构点进源码可以看见.catch的错误在出现小红叉的jquery文件处鼠标右键点

商用密码应用与安全性评估要点笔记(密码发展、密码算法)_搞搞搞高傲的博客-程序员秘密

Chrome基于RIng-LWE问题的抗量子密钥交换算法,微软公布其开发基于RIng-LWE问题的密钥交换算法的源代码。(引入噪声,当所需的乘法数量较少时,接近实用化)每次加密IV都必须重新生成,IV的引入使得对同一明文使用相同的密钥进行加密,得到不同的密文。1976年Diffle和Hellman发表《密码学的新方向》,首次证明公钥密码是可能的,提出了一种密钥协商的创造性方法(基于离散对数求解的困难问题)如PRINCE、SIMON、SPECK,分组长度32,48,64,80,96bit,补充空白。

前言——鼓励自己的话_鼓励自己的话学习_高晓伟_Steven的博客-程序员秘密

到新公司已经半年多了,对于产品的了解也逐渐加深。回想之前的时光,不得不承认我对于工作总是充满抵触。太过悠闲的生活让我对知识没有了追求。从今天开始,每天要分析一段suricata的源码。一个励志的故事。两座山一东一西,上面各住着一位道士。他们每天都要到山脚下打水,久而久之熟络了起来,打水时也会不断攀谈。几年后的一天,西山的道士发现东山的道士没有来打水。起初他也没觉得有什么问题,可连续过了几天

推荐文章

热门文章

相关标签