news 2026/4/15 15:55:56

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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,绿题拿下!

后记

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 13:17:45

新手必看:TPS5430 buck电路入门教程

从零开始搞懂TPS5430 Buck电路&#xff1a;新手也能轻松上手的实战指南 你是不是也曾在设计电源时&#xff0c;面对一堆参数和拓扑图一头雾水&#xff1f; 想给STM32、FPGA或者传感器供电&#xff0c;却不知道该用LDO还是DC-DC&#xff1f; 看到“buck电路图”、“环路补偿”…

作者头像 李华
网站建设 2026/4/15 13:13:32

使用hbuilderx开发电商小程序多规格选择完整示例

用HBuilderX开发电商小程序&#xff0c;搞定多规格选择的完整实战你有没有遇到过这种情况&#xff1a;用户在商品详情页点来点去&#xff0c;好不容易选完颜色和尺码&#xff0c;结果一确认——“抱歉&#xff0c;该组合无货”&#xff1f;这种体验简直让人抓狂。而更糟的是&am…

作者头像 李华
网站建设 2026/4/15 13:13:06

Xilinx Ultrascale+平台下XDMA配置全面讲解

Xilinx Ultrascale平台下XDMA实战配置全解析&#xff1a;从IP定制到Linux零拷贝传输 为什么高速数据通路离不开XDMA&#xff1f; 在如今的AI推理加速、雷达信号处理和医学成像系统中&#xff0c;FPGA作为协处理器的角色愈发关键。但一个常被忽视的问题是&#xff1a; 再强大…

作者头像 李华
网站建设 2026/4/15 13:12:16

vivado安装必备依赖库说明与配置方法

Vivado安装依赖库配置全攻略&#xff1a;从零解决Linux环境兼容性难题你有没有遇到过这样的场景&#xff1f;满怀期待地下载了Xilinx Vivado Design Suite&#xff0c;解压后运行./xsetup&#xff0c;结果命令行弹出一行红色错误&#xff1a;error while loading shared librar…

作者头像 李华