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

P14370 [JOISC 2018] 最差的记者 3 / Worst Reporter 3 Solution

P14370 [JOISC 2018] 最差的记者 3 / Worst Reporter 3Solution

注意:我个人推荐 LibreOJ 题面,看这份的样例图片会好不止亿点点。

前言

在考场上只拿了12 1212分(只想出了Subtask 2QwQ大佬勿喷!

这道题纯模拟可以把Subtask 2的分数拿下(因为数据实在太小了),时间复杂度O ( n + q t ) \mathcal{O}(n+qt)O(n+qt),已经到达10 14 10^{14}1014级别了,肯定爆。

所以我们需要一种算法可以达到O ( n + q ) \mathcal{O}(n+q)O(n+q)(即线性处理),好在它并不困难

思路

Part I.

我们会发现一件特别有意思的事情。

每个人的移动周期等于单次的移动距离。

其实这就好写了,我们也得到了一个我们需要的线性的方法:递推

把每个人的移动周期都用f i f_ifi记录下来(0 ≤ i ≤ n 0 \le i \le n0in)。

注意给旗手一个f 0 = 1 f_0 = 1f0=1,毕竟它前面没有人(题目已经说了)。

Part II.

第二件有意思的事情。

如果前面的人移动一次后超越了我,那么我就直接跟在他后面,即f i = f i − 1 f_i = f_{i-1}fi=fi1

小 L:如果我慢悠悠地移动咋办呢?

那么前面的人走⌈ d i f i − 1 ⌉ \lceil \frac{d_i}{f_{i-1}} \rceilfi1di次后我再跑,那么f i = f i − 1 × ⌈ d i f i − 1 ⌉ f_i = f_{i-1} \times \lceil \frac{d_i}{f_{i-1}} \rceilfi=fi1×fi1di

其实做到这里状态转移就已经推完了。


总结一下,这个状态转移其实就是

f ( x ) = { f i = f i − 1 ( d i ≤ f i − 1 ) f i = f i − 1 × ⌈ d i f i − 1 ⌉ ( d i ≥ f i − 1 ) f(x)=\left\{ \begin{aligned} f_i & = f_{i-1} & (d_i \le f_{i-1}) \\ f_i & = f_{i-1} \times \lceil \frac{d_i}{f_{i-1}} \rceil & (d_i \ge f_{i-1}) \\ \end{aligned} \right.f(x)=fifi=fi1=fi1×fi1di(difi1)(difi1)

Part III.

不过我们发现f i f_ifi0 ≤ i ≤ n 0 \le i \le n0in)会有很多是一样的,于是直接把他的左端点记录下来。

小 L:那么怎么处理这些呢?你是不是要一个时间复杂度低一点的算法?

我们发现它们都是倍增的(至少是2 22倍关系),所以可以直接把复杂度降到O ( log ⁡ V ) \mathcal{O}(\log V)O(logV)级别。

然后再和{ l , r } \{l, r\}{l,r}取交集就可以了。

贴两段比较没用的代码。

if(d[i]<=dp[i-1]){dp[i]=dp[i-1];le[i]=le[i-1];}else{dp[i]=((d[i]-1)/dp[i-1]+1)*dp[i-1];le[i]=i;}// 不懂的看上面去 :)
while(pos>=0){intx=t/dp[pos]*dp[pos];ans+=max(0ll,min(r,-1ll*le[pos]+x)-max(l,-1ll*pos+x)+1);pos=le[pos]-1;}

QwQ,绿题拿下!

后记

请勿抄袭题解,违者可能被洛谷棕名哦。

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

相关文章:

  • Windows平台常见USB转串口芯片驱动对比分析
  • 继电器控制电路设计:从零实现方案
  • Vitis平台FPGA加速项目实战案例详解
  • 电路仿真circuits网页版在模拟信号调理中的实践解析
  • Day 12:【99天精通Python】文件操作 - 让数据持久化保存
  • Xilinx Ultrascale+平台下XDMA配置全面讲解
  • Altium Designer铺铜与过孔连接方式详解
  • RISC-V中断上下文保存与恢复流程系统学习
  • 【顶级SCI复现】高比例可再生能源并网如何平衡灵活性与储能成本?虚拟电厂多时间尺度调度及衰减建模(Matlab代码实现)
  • PCB布局前的电路行为预判:电路仿真详解
  • 新手必看:TPS5430 buck电路入门教程
  • HBuilderX Windows环境配置:新手教程(零基础必看)
  • MOSFET工作原理项目应用:DC-DC变换器驱动设计示例
  • 持续提升专业技能和行业认知,利用碎片时间学习新工具或方法论
  • MusicFree:开源多平台聚合音乐软件
  • 【无功优化】“碳中和”目标下电气互联系统有功-无功协同优化模型(Matlab代码实现)
  • 强烈安利!9大AI论文网站测评,本科生毕业论文必备
  • 强烈安利9个AI论文平台,专科生搞定毕业论文不求人!
  • 强烈安利9个AI论文工具,自考学生轻松搞定论文写作!
  • mptools v8.0烧录速度提升的五个关键设置
  • VHDL课程设计大作业:串并转换电路实战教程
  • 电子电路热设计优化:Altium Designer仿真示例
  • 多智能体系统在价值投资中的止损策略:架构师的经验分享
  • 基于运放的模拟控制回路:全面讲解
  • 小白指南:SystemVerilog测试平台搭建流程详解
  • Anthropic Claude 4.5:AI分层编排的革命,成本、速度与能力的新平衡
  • 【倒计时三天】2025第八届金猿大数据产业发展论坛——暨AI InfraData Agent趋势论坛丨颁奖典礼·上海
  • 应收账款管理:教你5个回款策略与预警指标
  • 学霸同款2026 9款一键生成论文工具测评:本科生毕业论文必备神器
  • 基于FPGA的4位全加器设计与七段显示实战案例