题目链接:https://nanti.jisuanke.com/t/41406

思路:如果k的天数足够大,那么所有水池一定会趋于两种情况:

① 所有水池都是一样的水位,即平均水位

② 最高水位的水池和最低水位的水池高度只相差一个高度,且最低水位一定是平均水位

如果k给了个限制:

我们当然需要先算出所有水池高度的平均值。

然后从低到高排序,二分小于平均值的水位,二分高于平均值的水位,

然后判断二分的预期值需要的天数是否小于等于k。然后二分找出最低水位的最大值,

最高水位的最小值,两者相减就是答案了。


 #include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
#include <map>
#define rep(i,j,k) for(int i = (j); i <= (k); ++i)
#define per(i,j,k) for(int i = (j); i >= (k); --i)
#define rep__(i,j,k) for(int i = (j); i < (k); ++i)
#define per__(i,j,k) for(int i = (j); i > (k); --i)
#define inf 1e9
using namespace std;
typedef long long LL;
const int N = ; int arr[N],k,n;
LL sum,ave; bool check(int mid,int choice){
int sum = ;
if(choice == ){ //大于平均值的
rep(i,,n){
if(arr[i] >= mid) break;
sum += (mid - arr[i]);
}
}
else{ //小于平均值的
per(i,n,){
if(arr[i] <= mid) break;
sum += (arr[i] - mid);
}
} if(sum <= k) return true;
else return false;
} int main(){ while(~scanf("%d",&n)){
sum = ;
scanf("%d",&k);
rep(i,,n){
scanf("%d",arr + i);
sum += arr[i];
} sort(arr + ,arr + + n);
ave = sum / n; int l_end,r_start; //低于平均值的最大水位,高于平均值的最小水位
l_end = ave;
sum % n == ? r_start = ave : r_start = ave + ; //是否能平分 int ans_1,ans_2;
int l = arr[];//左边界
int r = l_end;//右边界
int mid;
while(l <= r){
mid = (l + r) >> ;
if(check(mid,)){
ans_1 = mid;
l = mid + ;
}
else r = mid - ;
} l = r_start;//左边界
r = arr[n];//右边界
while(l <= r){
mid = (l + r) >> ;
if(check(mid,)){
ans_2 = mid;
r = mid - ;
}
else l = mid + ;
} printf("%d\n",ans_2 - ans_1);
} getchar();getchar();
return ;
}

The Preliminary Contest for ICPC Asia Shenyang 2019 F. Honk's pool的更多相关文章

  1. The Preliminary Contest for ICPC Asia Shenyang 2019

    传送门 B. Dudu's maze 题意: 是什么鬼东西???我读题可以读半小时QAQ 给出一张无向图,一个人在里面收集糖果,每个点都有一个糖果,特殊点除外.当他第一次进入特殊点时,会随机往一条边走 ...

  2. The Preliminary Contest for ICPC Asia Shenyang 2019 H. Texas hold'em Poker

    题目链接:https://nanti.jisuanke.com/t/41408 题目意思很简单,就是个模拟过程. #include <iostream> #include <cstr ...

  3. The Preliminary Contest for ICPC Asia Shenyang 2019 C. Dawn-K's water

    题目:https://nanti.jisuanke.com/t/41401思路:完全背包 #include<bits/stdc++.h> using namespace std; int ...

  4. The Preliminary Contest for ICPC Asia Shenyang 2019 H

    H. Texas hold'em Poker 思路:根据每个牌型分等级,然后排序按照等级优先,最大值次之,次大值,最后比较剩下值的和. #include<bits/stdc++.h> us ...

  5. The Preliminary Contest for ICPC Asia Shenyang 2019 C Dawn-K's water (完全背包)

    完全背包为什么要取到M,可以取到2*M嘛,这题需要整取,对于不能整取的背包容量,dp[k]=INF,以及dp[j-water[i].weight]=INF时,dp[j]也不需要更新.如果不整取的话,后 ...

  6. The Preliminary Contest for ICPC Asia Shenyang 2019 D. Fish eating fruit(树形dp)

    题意:求一棵树上所有路径和模3分别为0 1 2 的权值的和 思路:树形dp 增加一个记录儿子节点满足条件的个数的数组 不要放在一起dp不然答案跟新会有问题 #include <bits/stdc ...

  7. The Preliminary Contest for ICPC Asia Shanghai 2019 F. Rhyme scheme(dp)

     题意:给你一个n和k 要你找到长度为n 字典序第k小的字符串 定义一个字符串合法:第i的字符的范围只能是前i-1个字符中的最大值+1 思路:我们dp[n][i][j]表示长度为n 在第i位 最大值为 ...

  8. The Preliminary Contest for ICPC Asia Shanghai 2019 C Triple(FFT+暴力)

    The Preliminary Contest for ICPC Asia Shanghai 2019 C Triple(FFT+暴力) 传送门:https://nanti.jisuanke.com/ ...

  9. The Preliminary Contest for ICPC Asia Nanjing 2019/2019南京网络赛——题解

    (施工中……已更新DF) 比赛传送门:https://www.jisuanke.com/contest/3004 D. Robots(期望dp) 题意 给一个DAG,保证入度为$0$的点只有$1$,出 ...

随机推荐

  1. apktool android studio 调试 smali code, 重新打包

    虽然有些菜单的位置跟新版的Android Stuido 3.4 有些不同,但是能用. https://crosp.net/blog/software-development/mobile/androi ...

  2. [LeetCode] 74. Search a 2D Matrix 搜索一个二维矩阵

    Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the follo ...

  3. 用 cgroups 管理 cpu 资源

    转自:http://xiezhenye.com/2013/10/用-cgroups-管理-cpu-资源.html 这回说说怎样通过 cgroups 来管理 cpu 资源.先说控制进程的 cpu 使用. ...

  4. Kubernetes 学习(八)Kubernetes 源码阅读之初级篇------源码及依赖下载

    0. 前言 阅读了一段时间 Golang 开源代码,准备正式阅读 Kubernetes 项目代码(工作机 Golang 版本为 Go 1.12) 参照 <k8s 源码阅读> 选择 1.13 ...

  5. java线程池模拟并发

    public class CountDownLatchTest1 implements Runnable{ final AtomicInteger number = new AtomicInteger ...

  6. nginx学习笔记2

    nginx基础配置 一.nginx常用命令 nginx -s reload:在nginx已经启动的情况下重新加载配置文件(平滑重启) nginx -s reopen:重新打开日志文件 nginx -c ...

  7. C#应用程序单例并激活程序的窗口 使其显示在最前端

    public class SoftHelper { ///<summary> /// 该函数设置由不同线程产生的窗口的显示状态 /// </summary> /// <p ...

  8. DHT11温湿度传感器模块使用方法和驱动代码实现

    DHT11模块简介 DHT11是一款价格便宜,易于使用的温度湿度测量二合一传感器.它具有超小体积.极低功耗的特点.它使用单根总线与单片机进行双向的串行数据传输,信号传输距离可达20米以上.非常适用于对 ...

  9. 微信小程序报thirdScriptError Cannot read property 'setData' of undefined

    用onLoad: function (options) {} 加载页面缓存的数据的时候报错   修改为          

  10. Dapper学习(三)之其他用法

    这里说的其他用法,是指 Async,Buffered,Transaction,Stored Procedure. 1. 首先 dapper支持异步 ExecuteAsync, QueryAsync, ...