正题

题目链接:https://ac.nowcoder.com/acm/contest/7413/C


题目大意

给一个序列AAA,求两个a,ba,ba,b使得∑i=1n∑j=1nmax{∣Ai−a∣,∣Aj−b∣}\sum_{i=1}^n\sum_{j=1}^nmax\{|A_i-a|,|A_j-b|\}i=1∑n​j=1∑n​max{∣Ai​−a∣,∣Aj​−b∣}最小。


解题思路

因为是取maxmaxmax,也就是a,ba,ba,b中最劣的那一个,所以显然有a=ba=ba=b。

考虑如和求aaa,不难发现其实答案就是对于每个Ai+Aj2\frac{A_i+A_j}{2}2Ai​+Aj​​的中位数。我们可以二分答案,然后求在midmidmid前有多少个Ai+AjA_i+A_jAi​+Aj​,这个显然也可以将数组排序后二分求得(其实不二分用指针也行)。

时间复杂度O(nlog⁡2n)O(n\log^2 n)O(nlog2n)


codecodecode

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll XJQ=1e9+7;
ll n,a[110000];
ll find(ll x){ll l=1,r=n;while(l<=r){ll mid=(l+r)>>1;if(a[mid]<=x)l=mid+1;else r=mid-1;}return r;
}
ll check(ll mid){ll ans=0;for(ll i=1;i<=n;i++)ans+=find(mid-a[i]);return ans;
}
int main()
{scanf("%lld",&n);for(ll i=1;i<=n;i++)scanf("%lld",&a[i]);sort(a+1,a+1+n);ll l=1,r=1e9,k=n*n;while(l<=r){ll mid=(l+r)>>1;if(check(mid)>=(k+1)/2)r=mid-1;else l=mid+1;}ll ans=0;for(ll i=1;i<=n;i++)a[i]=abs(a[i]*2-l);sort(a+1,a+1+n);for(ll i=1;i<=n;i++)ans+=a[i]*((i-1)*2+1);printf("%lld",ans%XJQ);
}

牛客挑战赛43C-最优公式【二分】相关推荐

  1. 牛客网 短最优升级路径 【Dijkstra算法】+【路径记录】

    链接:https://www.nowcoder.com/questionTerminal/a7052c5bd8634edb9ccee711a5c1ea54 来源:牛客网 短最优升级路径 题目描述:游戏 ...

  2. 牛客挑战赛47 C 条件(Floyd bitset优化)

    牛客挑战赛47 C 条件 思路:首先我们要两个图,一个是一定能到达的,一个是可能到达的,如果我们使用floyd (n^3)就有可能会超时,因为只要求询问能否到达,所以权值只有0和1,那我们可以使用bi ...

  3. 牛客挑战赛47 A 一道GCD问题

    牛客挑战赛47 A 一道GCD问题 思路参考牛客上的题解: 根据多维的更相减损术得gcd(x,y,z)=gcd(x,y−x,z−y)得 gcd(a1+k,a2+k,a3+k-,an+k)=gcd(a1 ...

  4. 牛客挑战赛47 D Lots of Edges(最短路+递归枚举子集)

    牛客挑战赛47 D Lots of Edges 思路:点的权值最多只有(1<<17)-1(131071) ,那我们可以枚举终点的值来算最短路,每个点能连边的值都是固定的,可以通过递归枚举子 ...

  5. 最小生成树--牛客练习赛43-C

    牛客练习赛43-C 链接: https://ac.nowcoder.com/acm/contest/548/C 来源:牛客网 题目描述 ​ 立华奏是一个刚刚开始学习 OI 的萌新. 最近,实力强大的 ...

  6. 牛客挑战赛42 A.小睿睿的数列

    牛客挑战赛42 A.小睿睿的数列 题目链接 题目描述 小睿睿给了你一个长度为n的数列,他想问你该数列中满足条件(区间内存在某个数是区间内所有数的公因数)的最长区间有多少个 输入描述: 第一行 111 ...

  7. 牛客挑战赛36 - 纸飞机

    题目链接:牛客挑战赛36 - 纸飞机 题目描述 直线上有n座山峰,第i座的高度为hi.从某座山峰上放飞一架纸飞机,它可以从左往右依次经过一系列高度严格递减的山头. 假设五座山峰的高度依次是3,4,3, ...

  8. 牛客每日练习----最优屏障,打铁的箱子,小妈妈找蝌蚪

    我从前最怕旁人火眼金睛,如今,倒是盼着有人能够洞幽烛远.如此,就能赠我一点欢喜. 链接:https://ac.nowcoder.com/acm/problem/14666 来源:牛客网 题目描述 M国 ...

  9. 牛客挑战赛34 A 能天使的愿望 (dp 分组背包)

    链接:https://ac.nowcoder.com/acm/contest/2271/A 来源:牛客网 题目描述 出题人寄给大家的一些闲话:参加了CSP-J/S 2019 的同学,考的都怎么样啊?不 ...

  10. 牛客挑战赛34 A.能天使的愿望(分组背包)

    链接:https://ac.nowcoder.com/acm/contest/2271/A 来源:牛客网 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 65536K,其他语言1310 ...

最新文章

  1. 基于100,000篇演讲的分析数据科学家发现了最佳演讲者的特征——及时解释听众不懂的词语,必要时提高10%的音调,正确和恰当的手势,氛围的营造...
  2. 需要使用新应用以打开此steam链接_steam社区界面打不开怎么办?完美解决方法看这里...
  3. 带你一文看懂MySqL中的事务与索引
  4. JavaScript学习总结(15)——十大经典排序算法的JS版
  5. Python 和curl 调用sendcloud发送邮件
  6. div section article区分--20150227
  7. postman本地访问https
  8. 【回归预测】基于matlab麻雀算法优化相关向量机RVM回归预测【含Matlab源码 1750期】
  9. 基于WebAssembly 的H.265播放器研发
  10. 【ViPER音效插件】,完美提升电脑音乐播放效果
  11. Java基础 - 网络编程 - netstat指令,UDP通信编程和网络编程总练习
  12. 高中数学排列组合公式/排列组合计算公式
  13. 将python 脚本转换为exe格式
  14. Git 修改提交者信息
  15. java 日期比较_java日期大小比较
  16. Three.js《踩坑日记1》
  17. 计算机中丢失tcalc,【图】通达信指标公式全部丢失,怎样能找回来_炒股软件,炒股,炒股公式,股票指标,股票软件_股票软件技术交流论坛_理想论坛 - 股票论坛...
  18. 《一条狗的使命》观后感
  19. react实现异步插件_react项目优化之webpack
  20. 2018全国计算机网络竞赛试题,全国2018年10月04741计算机网络原理真题以及答案解析...

热门文章

  1. java 方法执行结束局部变量释放_Java方法执行的内存模型
  2. mac php mcrypt,MacOSX 10.10安装mcrypt详细教程分享
  3. 计算机u打字,win7电脑打字打不出来怎么办
  4. 揭秘python的5种最佳调试方法_揭秘 IPython 的 5 种最佳调试方法-阿里云开发者社区...
  5. srv.sys蓝屏解决补丁_Win10 补丁 KB4556799 导致部分用户蓝屏死机和网络问题
  6. 计算机技术题目,计算机技术题目.doc
  7. 一般动态规划问题合集(Leetcode题解-Python语言)
  8. [JavaWeb-JavaScript]JavaScript_Data日期对象
  9. [JavaWeb-CSS]CSS概述
  10. [Qt入门] QPushButton创建