Minimizing Difference 【思维】
题目链接:
https://vjudge.net/contest/336389#problem/B
题目大意:
给出一个长度为n的数列以及操作次数k。k的范围为1e14。每次操作都可以选择给任意一个数加1或者减1。问k次操作后,数列中最大值与最小值的差值最小是多少。
解题思路:
1.可以用二分
2.思维,对数组进行排序,同时计算前后两个方向。具体看代码:
#include<stdio.h>
#include<algorithm>
typedef long long ll;
const int MAXN = 1e5 + ;
using namespace std; ll a[MAXN];
ll n, k, temp, ans; int main()
{
scanf("%lld%lld", &n, &k);
for(int i = ; i <= n; i ++)
scanf("%lld", &a[i]);
sort(a + , a + + n);
for(int i = ; i <= n / ; i ++)
{
int j = n - i + ;
temp = (a[i + ] - a[i] + a[j] - a[j - ]) * i; //将前i个都变成a[i + 1]以及将后i个全变成a[j]所需要的操作次数
if(temp <= k)
k -= temp;
else
{
ans = a[j] - a[i] - k / i; //剩余操作次数可否使某一边都作贡献
break;
}
}
printf("%lld\n", ans);
return ;
}
Minimizing Difference 【思维】的更多相关文章
- codeforces 1244E Minimizing Difference (贪心)
(点击此处查看原题) 题意分析 给出n个数,a1,a2...an,现在可以进行最多k次操作,每次操纵可以使得任意一个数自增或者自减,问经过最多k次操作后,n个数中的最大值-最小值最小为多少? 解题思路 ...
- Codeforces 1244E. Minimizing Difference
传送门 首先减的顺序是无关紧要的,那么有一个显然的贪心 每次减都减最大或者最小的,因为如果不这样操作,最大的差值不会变小 那么直接把序列排序一下然后模拟一下操作过程即可,别一次只减 $1$ 就好 #i ...
- [CF#592 E] [二分答案] Minimizing Difference
链接:http://codeforces.com/contest/1244/problem/E 题意: 给定包含$n$个数的数组,你可以执行最多k次操作,使得数组的一个数加1或者减1. 问合理的操作, ...
- codeforces #592(Div.2)
codeforces #592(Div.2) A Pens and Pencils Tomorrow is a difficult day for Polycarp: he has to attend ...
- bzoj2213: [Poi2011]Difference(思维题)
今天颓了一天T T 这题有两种写法... ①预处理出每种字符在原字符串中的位置,枚举两种字符作为最大值和最小值,把这两种字符的坐标归并排序,把最大值设为1,最小值设为-1,求最大子段和.注意因为 ...
- Little Difference Gym - 101612L 思维
题意: 给你一个数n,你需要输出它可以由那几个数相乘构成,我们设可以由x个数构成,这x个数中最小值为minn,最大值为maxx,那么要求maxx-minn<=1 问你满足上面要求的情况有多少种. ...
- BZOJ2213[Poi2011]Difference——DP
题目描述 A word consisting of lower-case letters of the English alphabet ('a'-'z') is given. We would li ...
- 530.Minimum Absolute Difference in BST 二叉搜索树中的最小差的绝对值
[抄题]: Given a binary search tree with non-negative values, find the minimum absolute difference betw ...
- Apparatus, system, and method for automatically minimizing real-time task latency and maximizing non-real time task throughput
An apparatus, system, and method are provided for automatically minimizing Real-Time (RT) task laten ...
随机推荐
- P4118 [Ynoi2016]炸脖龙I
思路:扩展欧拉定理 提交:\(\geq5\)次 错因:快速幂时刚开始没有判断\(a\)是否大于\(p\) 题解: 用树状数组维护差分,查询时暴力从左端点的第一个数向右端点递归,若递归时发现指数变为\( ...
- electron 打包成桌面运用
最近在学习nodejs,得知Electron是通过将Chromium和Node.js合并到同一个运行时环境中,用HTML,CSS和JavaScript来构建跨平台桌面应用程序的一门技术.对于之前一直从 ...
- VS2010调试时,对于一些语句不能单步运行也不能对变量添加监视的问题
在以mfc建立的工程中,需要建立一个链表来保存一些数据.但是在创建结构体,以及对其赋值的过程中,发现对结构体变量不能观察,添加到监视器中的变量也出现变量名不存在的错误. 首先,在文件的开始定义一个结构 ...
- Ubuntu18.04安装和配置Django,并实现简单示例
一.前言(系统,django介绍,window.mac.linux简单区别) Django是python开发过程最重要的web框架.因为在看的Django教学视频是在mac下安装的,我自己用的是Lin ...
- Echarts-复杂关系图(源码)
关系图: 代码: <!DOCTYPE html> <head> <meta charset="utf-8"> <script type=& ...
- 微信小程序开发-踩坑
异步请求处理 详情描述: 微信小程序的wx.request({})请求时异步处理,以下代码 wx.reuest({ url:"https://XXXA", method:" ...
- Mysql中行转列和列转行
一.行转列 即将原本同一列下多行的不同内容作为多个字段,输出对应内容. 建表语句 DROP TABLE IF EXISTS tb_score; CREATE TABLE tb_score( id ...
- fok函数
一.fork函数是什么 fork函数将运行着的程序分成2个(几乎)完全一样的进程.如下图: 进程1在进程关系中我们称之为父进程,进程2就是通过fork产生的,我们叫他子进程.这两个进程在fork执行完 ...
- Jmeter Web 性能测试入门 (七):Performance 测试中踩过 Jmeter 的坑
脚本运行的过程中,大量request抛error,但没有地方能够查看request是因为什么error的. 原因:Jmeter默认禁掉了运行过程中每个request的具体response信息收集,只保 ...
- Truffle Smart Contract Error: Invalid number of parameter
I followed the tutorial of quorum with truffle: https://truffleframework.com/tutorials/building-da ...