[THUPC2019]不等式/[51Nod1598]方程最小值

题目大意:

给定\(a_{1\sim n}\)和\(b_{1\sim n}\),令\(f_k(x)=\sum_{i=1}^k|a_ix+b_i|\)。对于所有\(k=1\sim n\),求\(f_k\)在\(\mathbb{R}\)中的最小值。

\(1\le n\le 5\times10^5,|a_i|,|b_i|<10^5\)

思路:

\[\sum_{i=1}^k|a_ix+b_i|=\sum_{i=1}^k|a_i||x+\frac{b_i}{a_i}|\]

画在数轴上就是在\(-\frac{b_i}{a_i}\)(即零点)的位置有\(|a_i|\)个点。要找到一个位置\(x\),使得\(x\)到所有点的距离之和最小。

根据小学奥数的那套理论,\(x\)就是所有零点的加权中位数。我们可以用一个大根堆、一个小根堆来维护所有的零点,并求出中位数。

考虑函数加上绝对值后,\(a_i\)实际的符号。对于\(-\frac{b_i}{a_i}<x\)的函数来说,\(a_i>0\);反之\(a_i<0\)。因此我们可以在对两个堆中的元素分别维护考虑绝对值后\(a_i,b_i\)之和。即可求出最终\(f_k(x)\)的最小值。

时间复杂度\(\mathcal O(n\log n)\)。

源代码:

#include<queue>
#include<cstdio>
#include<cctype>
#include<cassert>
#include<algorithm>
inline int getint() {register char ch;register bool neg=false;while(!isdigit(ch=getchar())) neg|=ch=='-';register int x=ch^'0';while(isdigit(ch=getchar())) x=(((x<<2)+x)<<1)+(ch^'0');return neg?-x:x;
}
const int N=5e5+1;
using int64=long long;
using Node=std::pair<double,int>;
std::priority_queue<Node,std::vector<Node>,std::greater<Node>> q1;//small
std::priority_queue<Node,std::vector<Node>,std::less<Node>> q2;//big
int64 s1,s2,a1,a2,b1,b2,a[N],b[N];
double o[N];
int main() {const int n=getint();for(register int i=1;i<=n;i++) a[i]=getint();for(register int i=1;i<=n;i++) b[i]=getint();for(register int i=1;i<=n;i++) {if(a[i]!=0) {o[i]=-1.*b[i]/a[i];if(s1&&o[i]>q1.top().first) {q1.push(std::make_pair(o[i],i));if(a[i]>0) a[i]=-a[i],b[i]=-b[i];a1+=a[i]; b1+=b[i];s1+=std::abs(a[i]);} else {q2.push(std::make_pair(o[i],i));if(a[i]<0) a[i]=-a[i],b[i]=-b[i];a2+=a[i]; b2+=b[i];s2+=std::abs(a[i]);}} else {b1+=std::abs(b[i]);}while(s1>s2) {q2.push(q1.top());const int i=q1.top().second;a1-=a[i]; b1-=b[i];s1-=std::abs(a[i]);a[i]=-a[i]; b[i]=-b[i];a2+=a[i]; b2+=b[i];s2+=std::abs(a[i]);q1.pop();}while(s2>s1) {q1.push(q2.top());const int i=q2.top().second;a2-=a[i]; b2-=b[i];s2-=std::abs(a[i]);a[i]=-a[i]; b[i]=-b[i];a1+=a[i]; b1+=b[i];s1+=std::abs(a[i]);q2.pop();}const double x=s1?q1.top().first:0;printf("%.7f\n",a1*x+b1+a2*x+b2);}return 0;
}

转载于:https://www.cnblogs.com/skylee03/p/10908162.html

[THUPC2019]不等式/[51Nod1598]方程最小值相关推荐

  1. 均值定理最大值最小值公式_数学均值定理怎么求不等式的最大值最小值,求教会(ฅω*ฅ)...

    展开全部 遵循32313133353236313431303231363533e59b9ee7ad9431333431363062的基本原则: 1.当两个正数的积为定植时,可以求它们的和的最小值,当两 ...

  2. 均值不等式中考_数学不等式解题技巧

    俗话说"规律在心中,考试不用愁".解题的时候,同学们经常会遇到一些反复出现的题型,如果掌握这类题型的解题规律,便能一通百通,高分无忧. 方程与不等式是初中代数的主干知识,是我们今后 ...

  3. 学习笔记---高等数学前置知识---数列、排列组合、解不等式

    数列 等差(a1即首项,d即公差,n即项数) 通项公式: 前n项和公式:或 等比(a1即首项,q即公比,n即项数) 通项公式: 求和公式: 附: 裂项公式: 常在计算数列和时用于裂项相消法 例: 1/ ...

  4. 数论 —— 整式方程

    [概念] 整式方程就是方程中所有的未知数均在分子上,分母只是常数且无未知数. 通常情况下,常年用字母 x.y.z 来表示未知数,方程中含有几个不同的未知数就叫做几元,未知数的最高次数是几就叫做几次. ...

  5. 线性规划图解法求最优解_高中数学:简单的线性规划问题

    1. 简单线性规划问题的有关概念 先来看一道高考题: 某公司招收男职员x名,女职员y名,x和y须满足约束条件 ,则 的最大值是( ) A. 80 B. 85 C. 90 D. 95 (1)约束条件:变 ...

  6. Cmn递推函数c语言,Cmn排列组合 高三数学知识点总结归纳5篇精选

    高三学生很快就会面临继续学业或事业的选择.面对重要的人生选择,是否考虑清楚了?这对于没有社会经验的学生来说,无疑是个困难的想选择.如何度过这重要又紧张的一年,我们可以从提高学习效率来着手!下面就是小编 ...

  7. 中外数学教学名著与数学思想

    中外数学教学名著与数学思想 (2011-08-01 13:30:56) 标签: 校园 分类: 工作篇 中外数学教学名著 一.数学纵横 1.1华罗庚,华罗庚科普著作选集,沪教,84[必读] 1.2张奠宙 ...

  8. 【多校训练】2021牛客多校第二场

    [前言] 这是打的第二场,rk39,但是AB这两个比较简单的题都没做emm,大概还是磨合的不够.然后感觉对于阈值类的东西还不是很敏感,应该看到不太好做就直接去想这种阈值的.校内3/9(然后就开启了常年 ...

  9. 高三女生因高中数学知识的数列解题技巧没掌握与梦想大学失之交臂

    高三女生因高中数学知识的数列解题技巧没掌握与梦想大学失之交臂 一漂亮高三女生在走出考场的那一刻已是泪流满面,问其原因竟是高考数学考试有关数列的考题没有能够做对,估计考分达不到自己理想大学的要求,其实高 ...

最新文章

  1. nginx之 nginx-1.9.7 编译安装、理论简介
  2. [Spring cloud 一步步实现广告系统] 19. 监控Hystrix Dashboard
  3. 基于PHP7的提供数据管理工具框架Meloy 1.0.3 发布
  4. excel文件下载下来损坏 js_js处理文件流下载excel
  5. 何恺明最新工作:简单实用的自监督学习方案MAE,ImageNet-1K 87.8%
  6. Verilog HDL语言实现的单周期CPU设计(全部代码及其注释)
  7. 玩转mini2440开发板之【如何设置开发板的网络参数】
  8. 如何在没有 System.Drawing.Common 的情况下使用 C# 获取图片格式
  9. linux c中的文件描述符与打开文件之间的关系
  10. 洛谷P1852:跳跳棋(LCA,树形结构)
  11. 使用AxiosJavaScript中的简单HTTP请求
  12. html页面顶部提示在更高浏览器下面提示语
  13. Python笔记:0
  14. win7重启mysql服务器_Win7系统下怎么重启iis服务?
  15. 由超高压的超导体猜测超导的真相
  16. java生成mib文件_【snmp】使用MIB Builder生成MIB文件
  17. WebRTC之SDP篇
  18. Matlab填充多边形
  19. 黑龙江大米:正宗东北大米,源于黑土地
  20. 这些常见的漏洞和修复方法你知道吗?

热门文章

  1. 【数据集】一文道尽医学图像数据集与竞赛
  2. 全球及中国汽车维修行业发展战略规划及投资策略建议报告2021-2027年
  3. 全球及中国增强现实产业战略布局及运营前景决策分析报告2021-2027年
  4. QQ协议分析及其还原(二)
  5. html5赛车小游戏,html5公路赛车小游戏
  6. 农业谋定竞争力-农业大健康·万祥军:质量效益促品牌农业
  7. Python3 文件读写
  8. 检查CentOS7定时任务是否启用并执行过
  9. 2018.08.20高二互测
  10. 《Android进阶之光》--多线程编程