zzulioj - 2558 数字的差值
首先感谢抱抱熊dalao的题解,提供了一种比较简单的思路。
[抱抱熊dalao的题解](https://note.youdao.com/ynoteshare1/index.html?id=52f087d1427e209252c30d79c0be98fd&type=note)
[题目链接](http://acm.zzuli.edu.cn/problem.php?id=2558)
简单的说每次最小值+1都会让这个值已经这个数左边的元素处于这个数左边的元素和这个数右边的元素直接,所以我们就枚举出最大的左边元素,然后除以元素数量。至于为什么要向下取整,是因为如果有小数,则左边这组数的最小值与“左边元素相差1”,这时候向下取整就是最小的元素。最大值同理向上取整。
#include<cstdio>
#include<stack>
#include<queue>
#include<cmath>
#include<climits>
#include<cstring>
#include<cstdlib>
#include<cctype>
#include<algorithm>
#include<iostream>
#include<string>
#include<vector>
#define INF 233333333333333
using namespace std;
typedef long long ll;
typedef pair<int, int> P;
const int maxn = 100005;
int num[maxn];
int main(void) {
int T;
cin >> T;
while(T--) {
int n, k;
cin >> n >> k;
for (int i = 0; i<n; i++)
scanf("%d", &num[i]);
sort(num, num+n);
double sum1 = k, sum2 = -k;
int c1 = 0, c2 = 0;
for (int i = 0; i<n; i++) {
//计算数组最小值能达到最大值时左边元素的累加值
if (sum1 + num[i] < num[i] * (i+1))
break;
sum1 += num[i], c1++;
}
for (int j = n-1; j>= 0; j--) {
//计算数组最大值能达到的最小值时右边元素的累加值
if (sum2 + num[j] > num[j] * (n-j))
break;
sum2 += num[j], c2++;
}
cout << max(0, (int)(ceil(sum2/c2) - floor(sum1/c1) + 1e-10)) << endl;
//计算最小值的最大值并向下取整&&计算最大值的最小值并向上取整,如果最小值大于最大值
//则说明数组能达到最小值与最大值相等的状态
}
return 0;
}
zzulioj - 2558 数字的差值的更多相关文章
- PHP中比较两个时间的大小与日期的差值
在这里我们全用到时间戳 mktime(hour,minute,second,month,day,year,[is_dst]) 其参数可以从右向左省略,任何省略的参数都会被设置成本地日期和时间的 ...
- 【nyoj-1233】差值
描述 输入一个整数数组,将它们连接起来排成一个数,找出能排出的所有数字中最大,最小的两个,输出两个数的差值.例如输入数组{1, 2},则输出9. 输入 第一行输入一个整数T,表示有T组测试数 ...
- 在论坛中出现的比较难的sql问题:32(row_number函数+子查询 sql循环取差值)
原文:在论坛中出现的比较难的sql问题:32(row_number函数+子查询 sql循环取差值) 所以,觉得有必要记录下来,这样以后再次碰到这类问题,也能从中获取解答的思路. sql循环取差值,该怎 ...
- 奇妙的算法【10】TX--有效号码、最,小耗时、最小差值、差值输出、异或结果
昨晚刚刚写的几道算法题,难度也还行,就是全部AC有些困难,当时第一题AC.第二题AC 60%,第四题AC 40%,第五题没有时间写完了,这个应该全部AC了:其中第三题没有写出来 1,是否存在符合规范的 ...
- JAVA中计算两个日期时间的差值竟然也有这么多门道
上半年春招的时候,作为面试官,对于面试表现的不错的同学会要求其写一小段代码看看.题目很简单: 给定一个日期,然后计算下距离今天相差的天数. 本以为这么个问题就是用来活跃面试氛围的,但是结果却让人大跌眼 ...
- 用Scala实现集合中相邻元素间的差值
欢迎转载,转载请注明出处,徽沪一郎. 概要 代码这东西,不写肯定不行,新学Scala不久,将实际遇到的一些问题记录下来,日后也好查找. 今天讲的是如何计算同一集合中元素两两之间的差值,即求开始集合(a ...
- jsoncpp封装和解析字符串、数字、布尔值和数组
使用jsoncpp进行字符串.数字.布尔值和数组的封装与解析. 1)下载jsoncpp的代码库 百度网盘地址 :http://pan.baidu.com/s/1ntqQhIT 2)解压缩文件 json ...
- 输出有序数组的中两个元素差值为指定值diff的两个元素
题目: 输出有序数组的中两个元素差值为指定值diff的两个元素. 思路: 这与输出两个元素的和的值为一定值类似,需要两个指针,不同的是:指针不是一左一右,而是一前一后. 如果差值等于diff,则返回: ...
- php 算法之切割数组,不用array_chunk(),算法之二,取数组的差值,不用array_diff()
用php写算法切割数组,不用array_chunk();算法例如以下所看到的. <?php //$array 数组 //$size 每一个数组的个数 //每一个数组元素是否默认键值 functi ...
随机推荐
- 非替代品,MongoDB与MySQL对比分析
IT168 评论]对于只有SQL背景的人来说,想要深入研究NoSQL似乎是一个艰巨的任务,MySQL与MongoDB都是开源常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数 ...
- IDEA 2019注册码(2020年4月过期)
IDEA 2019注册码(2020年4月过期) 812LFWMRSH-eyJsaWNlbnNlSWQiOiI4MTJMRldNUlNIIiwibGljZW5zZWVOYW1lIjoi5q2j54mII ...
- 第十九节:Asp.Net Core WebApi基础总结和请求方式
一. 基础总结 1.Restful服务改造 Core下的WebApi默认也是Restful格式服务,即通过请求方式(Get,post,put,delete)来区分请求哪个方法,请求的URL中不需要写方 ...
- JS 学习笔记
在JS中两个对象不能用“==” 或者“===” 来比较,如果硬是要比较的话,始终返回的是false var x = new String("Bill"); var y = new ...
- 关于eclipse SE版本不支持建立web工程的问题
关于eclipse SE版本不支持建立web工程的问题 我们会发现 JAVA eclipse SE版本无法建立 Web 程序的问题...... 最好的解决方法就是下载一个myeclipse 或 Jav ...
- XmlExtensions帮助类
public static class XmlExtensions { static Lazy<XmlWriterSettings> _settings = new Lazy<Xml ...
- loadrunner 由mdrv进程终止导致的非正常终止
因为脚本迭代次数多的问题,迭代了3次,后来改成了迭代1次(1个Vuser),就不会了,
- PIE SDK打开自定义矢量数据
1. 数据介绍 信息提取和解译的过程中,经常会生成一部分中间临时矢量数据,这些数据在执行完对应操作后就失去了存在的价值,针对这种情况,PIE增加了内存矢量数据集,来协助用户完成对自定义矢量数据的读取和 ...
- 如何简单使用tensorboard展示(一)
我使用tensorboard中的graph做了展示,至于其它功能可以类推,其代码如下: import numpy as npimport tensorflow as tf x_img = np.arr ...
- istio流量管理
目录 1 准备工作 1.1 在k8s部署istio 1.2 istio自动注入 1.3 应用部署要求 2 负载均衡 3 流量迁移:金丝雀发布 3.1 发布应用 3.2 创建目标规则:Destinati ...