[THUPC2019] 不等式

THUPC/CTS2019 游记 因为没报APIO,所以只能去THUPC和CTS了(老师说APIO“性价比低”)。 Day -? 考完省选后在家里颓,每年睡到很晚,看半天小说,瞎写点题。开了场CodeChef May Challenge,切了几个前面的题,不会Challenge,感觉CUREK很有意思,做了几天才口胡出一个做法,但是太烦了不想写(其实是没时间了),于是rk11滚粗。 Day 0 从广州出发到北京,前一天联系不上队友... 阅读详情

description
对于给定的{ai},{bi}\{a_i\},\{b_i\}{ai​},{bi​},定义fk(x)=∑i=1kabs⁡(aix+bi)f_k(x)=\begin{matrix}\sum_{i=1}^k\end{matrix}\operatorname{abs}(a_ix+b_i)fk​(x)=∑i=1k​​abs(ai​x+bi​)

对于每一个kkk,求fk(x)f_k(x)fk​(x)的最小值


solution
首先考虑ai=1a_i=1ai​=1的时候,也就是我们要求min⁡{∑∣x+bi∣}\min\{\sum |x+b_i|\}min{∑∣x+bi​∣}
∣x+bi∣|x+b_i|∣x+bi​∣的几何意义就是在数轴上,xxx到−bi-b_i−bi​这个点的距离
那么根据初一数学的芝士,xxx取所有−bi-b_i−bi​的时候可以取到最小值

那么当ai=−1a_i=-1ai​=−1的时候呢?每一个式子变成了∣−x+bi∣=∣x−bi∣|-x+b_i|=|x-b_i|∣−x+bi​∣=∣x−bi​∣,也就是数轴上xxx到bib_ibi​的距离
这样的话我们还是把一个式子对应成了一个点

当∣ai∣≠1|a_i|\neq1∣ai​∣​=1时,也就是式子是最基本的∣aix+bi∣|a_ix+b_i|∣ai​x+bi​∣时,我们转化一下,变成∣ai∣∣x+biai∣|a_i||x+\frac{b_i}{a_i}|∣ai​∣∣x+ai​bi​​∣,注意外面aia_iai​的绝对值不能丢
这个式子相当于aia_iai​倍的xxx到−biai-\frac{b_i}{a_i}−ai​bi​​的距离,相当于把它转化成了aia_iai​个点

这样的话类比ai=1a_i=1ai​=1的时候的方法,利用一个线段树维护这道题就轻松解决了

注意因为坐标可能出现分数,所以我们需要先算出每个式子转化成的坐标离散化之后再进行建树

细节还是挺多的,注意需要考虑ai=0a_i=0ai​=0的情况


code

#include <bits/stdc++.h>
using namespace std;
# define Rep(i,a,b) for(int i=a;i<=b;i++)
# define _Rep(i,a,b) for(int i=a;i>=b;i--)
# define RepG(i,u) for(int i=head[u];~i;i=e[i].next)
# define int long long
# define double long double 

const int N=1e6+5;

template<typename T> void read(T &x){
   x=0;int f=1;
   char c=getchar();
   for(;!isdigit(c);c=getchar())if(c=='-')f=-1;
   for(;isdigit(c);c=getchar())x=(x<<1)+(x<<3)+c-'0';
    x*=f;
}

int n;
int a[N],b[N];
double x[N],lsh[N];
int pos[N],tot,add;

struct node{
    int l,r,cnt;
    double sum;
}seg[N<<2];

# define lc (u<<1)
# define rc (u<<1|1)

void pushup(int u){
    seg[u].cnt=seg[lc].cnt+seg[rc].cnt;
    seg[u].sum=seg[lc].sum+seg[rc].sum;
}

void build(int u,int l,int r){
    seg[u].l=l,seg[u].r=r;
    if(l==r)return;
    int mid=l+r>>1;
    build(lc,l,mid);
    build(rc,mid+1,r);
}

void update(int u,int x,int k,double xc){
    if(seg[u].l==seg[u].r){
        seg[u].cnt+=k;
        seg[u].sum+=xc*k;
        return;
    }
    int mid=seg[u].l+seg[u].r>>1;
    if(x<=mid)update(lc,x,k,xc);
    else update(rc,x,k,xc);
    pushup(u);
}

int kth(int u,int k){
    if(seg[u].l==seg[u].r)return seg[u].l;
    if(seg[lc].cnt>=k)return kth(lc,k);
    else return kth(rc,k-seg[lc].cnt);
}

int qcnt(int u,int l,int r){
    if(l>r)return 0;
    if(seg[u].l>=l&&seg[u].r<=r)return seg[u].cnt;
    int mid=seg[u].l+seg[u].r>>1;
    int res=0;
    if(l<=mid)res+=qcnt(lc,l,r);
    if(r>mid)res+=qcnt(rc,l,r);
    return res;
}

double query(int u,int l,int r){
    if(l>r)return 0;
    if(seg[u].l>=l&&seg[u].r<=r)return seg[u].sum;
    int mid=seg[u].l+seg[u].r>>1;
    double res=0;
    if(l<=mid)res+=query(lc,l,r);
    if(r>mid)res+=query(rc,l,r);
    return res;
}

signed main()
{
    read(n);
    Rep(i,1,n)read(a[i]);
    Rep(i,1,n)read(b[i]);
    Rep(i,1,n)x[i]=lsh[i]=-1.0*b[i]/a[i];
    sort(lsh+1,lsh+n+1);
    int sz=unique(lsh+1,lsh+n+1)-lsh-1;
    Rep(i,1,n)pos[i]=lower_bound(lsh+1,lsh+sz+1,x[i])-lsh;
    build(1,1,sz);
    Rep(i,1,n){
        if(!a[i])add+=abs(b[i]);
        else update(1,pos[i],abs(a[i]),x[i]),tot+=abs(a[i]);
        int to=kth(1,tot+1>>1);
        printf("%Lf\n",(lsh[to]*qcnt(1,1,to-1)-query(1,1,to-1))+(query(1,to+1,sz)-lsh[to]*qcnt(1,to+1,sz))+add);
    }
    return 0;
}
CTSC2018&APIO2018&THUPC2018乱搞记 前言 这是我最后一次参加CTSC和APIO了,虽然是冲着Au去的,但并没有什么心理负担,就当是去旅游了。 day0 早上签到下午试机晚上战斗,然后一天就这样过去了。 听说有两个人住小床房的情况,还好不是我。还有舍友是pty比较好评,方便战斗。 day1 早上七点半就吃完早餐了,但一直等到九点才给进考场。 看题,t1看完觉得不难,就先跳了。t2是大数据结构题,没啥想法。t3想了... 阅读详情

相关推荐

从工艺文件到寄生分析:手把手教你用华大九天RCExplorer做版图预检(附ITF文件解析)

本文详细介绍了华大九天RCExplorer工具在模拟IC和版图设计中的应用,从工艺文件解析到寄生参数提取的全流程。通过ITF文件的深度解析和实战案例,帮助工程师掌握金属层、介质层及通孔参数的关键影响,提升设计效率与准确性。文章还提供了与StarRC工作流集成的实用技巧,是国产EDA工具应用的权威指南。

weixin_42522552的博客 405

[THUPC2019]历史行程

[THUPC2019]历史行程 题目背景 人生是怎么样的呢?我们是怎样活着的呢? 无论是谁,都是从黑暗中降生,最后再回归于黑暗。几年,几十年,短暂而漫长的时光。形形色色的人,形形色色的事,如过眼云烟,转瞬即逝。过眼繁花终有尽时,有些东西还能弥留于你的记忆之中,但更多的,早已无可寻觅。 但是,有个人,你不会忘记。 在你降生于黑暗之中时,那个人就一直陪在你身边。当你突破那黑暗,第一次见到世界的光明的时候,那个人也在你身边。 第一次的啼哭,第一次的说话,第一次的走路,第一次的奔跑。 每一次的成长,是你自己的一次

taiq的专栏 282

QUIC 协议域名封堵:核心原理、关键技术与实现路径(C/C++代码实现)

随着 QUIC 协议在互联网领域的广泛应用,其基于 UDP 的传输特性与加密设计,打破了传统 TCP 协议下的域名封堵逻辑,给网络合规管理与安全防护带来新的技术难题。本文将脱离具体代码实现,聚焦 QUIC 协议域名封堵的核心原理、关键技术环节与实际落地路径,从协议特性本质出发,解析如何在遵循 RFC 9000、RFC 9001 等规范的前提下,实现对 QUIC 流量的精准域名封堵。

chen1415886044的博客 1465

「THUPC 2019」不等式 / inequality

https://loj.ac/problem/6620 高中数学好题。。 |kx+b|的函数图像很直观,直接考虑函数图像: 一定只有一段极小值点! 这个点就是最小值了 特点:斜率为0! 而且发现,如果每个|kx+b|的零点作为一个端点的话,那么最小值一定可以在一个端点取到! (因为两个端点之间是一次函数,最值一定是二者之一) 这个最小值点斜率是负的,下一个就是正的 所以线段树...

weixin_34072458的博客 257

JAVA:Spring Boot 集成 LibreOffice 实现文档在线转换服务

本文介绍了在企业级应用开发中使用LibreOffice实现文档格式转换的技术方案。通过对比分析商业库、纯Java方案和云服务API的优缺点,重点阐述了LibreOffice在格式兼容性、转换质量和零成本方面的优势。文章详细说明了环境准备步骤,包括Windows/Linux系统安装LibreOffice、解决中文乱码问题以及Docker部署方案。最后提供了Spring Boot项目的基本配置,包括Maven依赖和application.yml配置文件,为构建稳定高效的文档转换服务奠定基础。

木头 519

高比例风电电力系统储能运行及配置研究(python&Matlab实现)

目录1 概述2 案例3 Matlab实现 3.1 题目及分析3.2 Matlab代码 4 七个题全部代码(值得学习) 下面我们先以第二题为例,然后给出Matlab代码:先考虑风电装机300MW直接替代机组3的发电功率曲线,观察系统功率平衡发生的变化情况。然后在此场景下,以最小发电成本为目标函数,将负荷分配给两台火电机组1、2和风电机组,绘制机组日发电计划图。再将风电装机容量作为一个决策变量,以最小发电成本为目标函数,求取最小发电成本对应的风电装机容量,绘制机组日发电计划图。1. 风电装机300MW、直接

weixin_46039719的博客 1738

[THUPC2019]不等式 / inequality

不等式 / inequality 题解 《关于我因为这道题过于难调而将其命名为“贞难调”的这件事》 其实思路蛮简单的。 很容易发现,这些都可以根据零点进行分段,所以最小值一定会在一个其中的一个零点出现。 可如果我们对于每个式子都直接枚举零点的话会直接T爆。 我们便想到了通平衡树来维护每个节点的值,减少了查询的时间复杂度。 可这还是会T的。忽然,我们想起了一个一个结论。对于一个形如的式子,它的最小值取在中位数处,容易证明。 虽然原式并不是长这个样子的,但我们可以将其拆分成的样子。接下来,我们可

StaroForgin的博客 262

仿真学习系列(四十七):Sigrity仿真之直流压降与电流密度

在现代电子设计中,电源网络的设计和分析对于保证电路的稳定性至关重要。直流压降(IR-Drop)和电流密度是评估电源网络性能的关键参数,尤其是在高频和高速电路中。它们直接影响到设备的工作稳定性与效率。通过Sigrity的仿真工具,可以深入分析和优化这些电源特性,从而确保系统的可靠性。 本节将介绍直流压降和电流密度的基本概念,以及如何在Sigrity中使用PowerDC模块进行相关仿真。

案例文章,高速信号 508

THUPC2019/CTS2019 记

Day -? 考完省选直接到了北京十一中集训 做模拟赛天天摸鱼颓废感觉药丸 饭堂好评(就是贵了点 Day 0 去THUPC报道 和samjia BAJim范老师zzy和孔老大组队逛THU 晚上睡的有点晚 Day 1/0 土豆oj好评 果然又咕了,扫雷启动 看题先做母亲节题,由于懒得思考写了个一天一天往前推 然后samjia上来秒了B,我负责看后面几题 发现这个J可能是个流就先写了写完才发现不对 冷...

时光真疯狂, 我一路执迷于匆忙. 840

ESP32-C3模组上跑通HTTPS分次传输文件(1)

ESP32-C3模组上跑通HTTPS分次传输文件(1)

phmatthaus的专栏 757

【数据分享】12.5米分辨率DEM地形数据(分省)

该数据来源于NASA地球科学数据网站(https://nasadaacs.eos.nasa.gov/),是ALOS卫星获取的高精度地形数据。该数据由于精度高,包括全省范围的数据和省内每个城市范围的数据!

JData_Engineer的博客 2171

[Ynoi2016]炸脖龙I/Nephren Ruq Insania

Ynoi竟然出了个奈芙莲的题,少见啊 Ynoi竟然有个不卡常的题,更少见了 这道题其实思路非常好想,本质上就是一个暴力,但是要用到拓展欧拉定理,是什么呢? ac≡{ac,c<ϕ(p)ac mod ϕ(p)+ϕ(p),c≥ϕ(p) mod pa^c\equiv\begin{cases}a^c,c<\phi(p) \\ a^{c\bmod \phi(p)+\phi(p)},c\geq\phi(p)\end{cases} \bmod pac≡{ac,c<ϕ(p)acmodϕ(p)+ϕ(p),c

NephrenRuqInsania 448

学Simulink--机器人基础关节控制场景实例:基于Simulink的无刷直流电机(BLDC)关节六步换相位置控制仿真

本文详细介绍了基于Simulink的BLDC六步换相位置控制仿真方法,针对机器人关节的低成本控制需求。重点阐述了霍尔定位、六步换相和位置闭环三大核心原理,通过Simulink建模实现了从霍尔信号处理到位置环控制的全流程。仿真结果表明,该系统可实现0.3°的定位精度和80ms的响应时间,满足教育机器人等应用场景需求。文章还提供了核心代码模块和参数设置方法,并探讨了转矩脉动抑制、无传感器控制等进阶优化方向,为低成本机器人关节驱动提供了实用解决方案。

amy_mhd的博客 152

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

[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\)...

weixin_34358092的博客 233

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Luogu 3934 Nephren Ruq Insania

和Ynoi2016 炸脖龙重题了。 BZOJ 5394。 首先是扩展欧拉定理: 一开始傻掉了……递归的层数和区间长度无关……也就是说我们每一次直接暴力递归求解子问题一定不会超过$logP$层,因为当模数变成$1$了的时候,不管怎么乘方都不会再变化了。 然后要注意$b < \phi (P)$的情况,在快速幂的时候判断一下,如果超过了$\phi (P)$,那么就再加上一个$...

dashu497731727的博客 189

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

[LG5377][THUPC2019]鸽鸽的分割

题目大意:有一个圆,圆上有$n$个点,将这几个点两两连接,问最多分成几部分 题解:发现这相当于一个平面图,由欧拉公式得($F$为平面分割块数,$E$为平面图边数,$V$为平面图点数):$$F=E-V+2$$可知最优解不存在三线共点。 $V=n+\binom n4$,即圆上原来的$n$个点,和任意四个点会产生一个交点 $E=n+\binom n2+2\binom n4$,即原来的$n$条弧,任...

weixin_34321977的博客 385

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

洛谷10月月赛R2-T3-Nephren Ruq Insania

传送门 这个题明显扩展欧拉定理,也就是这个定理: abmodc=a(bmodϕc)+ϕcmodca^b\mod c=a^{(b\mod \phi c)+\phi c}\mod c我们可以递归地去做那个式子,一直取phi,再加个快速幂(=ksm=kasumi)就好了。 所以就可以做了。 还有就是这么一直取phi,最多只会取log2plog_2 p次,就会变成1,然后就是: amod1+ϕ1=

玫葵之蝶 623

洛谷3934:Nephren Ruq Insania——题解

https://www.luogu.org/problemnew/show/P3934 题面自己读吧(滑稽。 看到这道题就能够想到BZOJ4869:[SHOI2017]相逢是问候我们曾经用过的哲学扩展欧拉定理。 (咦什么时候这个东西都普及到noip了好方啊) 也就是说,不论询问的区间[l,r]长度有多大,实际上我们暴力算只需要logp次模数就变成了1之后的询问就不需要担心了。 区间修...

weixin_33938733的博客 227

P3934 Nephren Ruq Insania

  输入输出样例 输入样例#1: 复制 6 4 1 2 3 4 5 6 2 1 2 10000007 2 2 3 5 1 1 4 1 2 2 4 10 输出样例#1: 复制 1 3 1 输入样例#2: 复制 5 5 2 3 3 3 3 1 1 1 530739835 2 1 1 8356089 2 1 4 5496738 1 1 2 66050181 1 2 4 1386...

海绵的博客 333

luogu P3934 Nephren Ruq Insania

题意: luogu\text{luogu}luogu的智能推荐是个好东西。 题目传送门: https://www.luogu.org/problem/P3934 思路: 弱化版题目详见:CF906D Power Tower\text{CF906D Power Tower}CF906D Power Tower。 我们发现这道题只需要满足区间修改单点查询...

zsyz_ZZY的博客 488

【题解】LuoGu5375:[THUPC2019]组合数据结构问题

原题传送门 直接模拟四个数据结构的操作即可 一旦某一个数据结构不满足要求以后就不用模拟了 注意每一次都要判断是否为空,否则会RE Code: #include <bits/stdc++.h> using namespace std; queue <int> a; stack <int> b; priority_queue <int> c; prior...

ModestCoder_的博客 402

CTSC2018心了记&APIO2018态了记&THUPC2018崩了记

day -1 第二天早的飞机,先去广州住。 继续推石头门0,发现弹性界限的认知和私密镜里的圣痕剧情大量重复,爽快skip。 终于推完了无限远点的牵牛星,跳了ed,发现没进交叉坐标的星辰。 然后又来了一次没跳ed,发现还是没进。 然后才知道得从闭时曲线的碑文开始重走A线,可以接收到来自盟誓的文艺复兴发来的d-rine,然后通完无限远点的牵牛星就能进交叉坐标的星辰。 推完后还顺便看了dit...

不来也不去的一只失忆蝴蝶 2870

noip模拟赛 Nephren Ruq Insania

题目背景 大样例下发链接:https://pan.baidu.com/s/1nuVpRS1密码: sfxg 注意:本题大样例4的输出文件修改为https://pan.baidu.com/s/1bUWuZW 奈芙莲·卢可·印萨尼亚(Nephren-Ruq-Insania) 同为妖精仓库的成体妖精兵,天赋不如珂朵莉一般,只是一个平凡的妖精. 睡觉时如同毯子一般在威廉身上为...

weixin_30532987的博客 265

THUPC2019 & CTS2019 & APIO2019 游记

THUPC 去之前勤学苦练了……端茶倒水。 练习赛零贡献拿了本算导。 正式赛_rqy和zyb疯狂带飞,鄙人只写了个J和L,然后那个L还被疯狂卡常,最后还是请zyb帮忙写了个松式基排。 最后发现是rk2,感觉自己这个交了四五发的L是罪魁祸首,心态崩了,我对不起你们(哭)。 CTS Day1很愉快的玩了很长时间的提答。那个T1做到最后差一步钦定偏序使其变成一个树,T2差的还远,T3最后交错点了摔。最后...

Mys_C_K的博客 1032
上一篇: [FJWC2020 Day1T1] 人生
下一篇: 期望基本概念和性质
NephrenRuqInsania
博客等级 码龄8年 20粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值