当前位置: 首页 > news >正文

T690363 促销活动

考虑分块,然后拆贡献。对于所有散块我们直接暴力重构后操作/查询。对于整块的 1 操作,我们考虑打一个标记 \(T_x\),那么之后的查询块 \(x\) 就相当于查询

\[\max((p_i+T_x)q_i)=\max(q_iT_x+p_iq_i) \]

那么设 \(k_i=q_i,b_i=p_iq_i\)。相当于我们每回查询 \(f_i(x)=k_ix+b_i\)\(x=T_x\) 时的最大值。那么发现只有在散块操作时才会改变 \(f(x)\) 的参数,那么我们只需要在散块时暴力单调栈维护下凸壳即可。

这里补一下下凸壳求法。显然,对于 \(k_i=k_j,b_i<b_j\) 的情况下 \(b_i\)完全被覆盖不会访问到。那么我们直接按 \(k\) 为第一关键字,\(b\) 为第二关键字排序。之后单调栈维护上一个会被完全覆盖的函数即可。

那么对于栈顶两个函数 \(f_1(x)=k_1x+b_1,f_2(x)=k_2x+b_2\),如果新加入的 \(f(x)\)\(f_1(x)\) 的交点在 \(f_1(x)\)\(f_2(x)\) 右侧则 \(f_1(x)\) 被完全覆盖。

也就是说有

\[\forall x,k_2x+b_2>k_1x+b_1\lor kx+b>k_1x+b_1 \]

\[\Rightarrow \forall x,x<\frac{b_1-b_2}{k_2-k_1}\lor x>\frac{b_1-b}{k-k_1} \]

即要求 \(\frac{b_1-b_2}{k_2-k_1}\geq \frac{b_1-b}{k-k_1}\),为上述条件。

那么求出交点之后两交点之内即为这个区间内值的答案,二分即可。

复杂度 \(O(\frac{n\log B}{B}q_1+q_2B\log B)\)。实测取 \(B=100\) 比较优秀。

http://www.jsqmd.com/news/37617/

相关文章:

  • 1-3-2-线程生命周期与状态转换
  • 1-2-2-异常体系
  • 1-5-1-设计模式与OOP
  • 1-6-0-总纲
  • 1-6-2-网络协议基础
  • 1-3-5-AQS详解
  • 起飞啦,太easy啦!!!小白的神级AI辅助工具,一句话即可搭建超50个节点的工作流~~~~
  • 3-1-1-2-MySQL锁机制
  • Debug日志
  • 3-1-1-4-ACID特性底层原理
  • 1-6-5-Netty
  • 2025年11月北京离婚房产律师对比榜:五强机构多维评测
  • 3-1-2-1-MySQL整体架构详解
  • 3-1-2-2-MySQL分页查询机制
  • 3-1-2-3-MySQL高可用与容灾
  • 打印文件怎么居中,占整个页面
  • 3-1-0-MySQL知识总览
  • AT AGC043D Merge Triplets 题解
  • 4-1-2-Kafka-Broker-log
  • SqlSugar 在linux环境下连接sqlserver数据库报错SSL出错,因为升级了驱动,字符串增加Encrypt=True;TrustServerCertificate=True;
  • 2025年11月GPU服务器公司排名:五强技术方案与落地案例对比
  • 【JMeter】命令行方式使用 - 谷粒
  • 【JMeter】图形化方式使用 - 谷粒
  • 在 Windows 系统上安装官方 Codex CLI 教程
  • 关于CSS的三种引入方法的说明与区别说明
  • 薪酬管理:企业增长的“隐形引擎”—中国薪资管理系统Top 5深度分析与选型指南
  • SpringOJ竞赛计划----组件ElasticSearch
  • C# Avalonia 17- ControlTemplates - VisualTreeDisplay
  • 【软件测试】你需要的面试技巧全在这里,细节满满
  • Q:访问url地址,nginx报错 403 Forbidden