news 2026/4/16 17:23:40

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/16 10:20:50

Vitis平台FPGA加速项目实战案例详解

FPGA加速实战&#xff1a;用Vitis把图像处理性能拉满的全过程最近在做一个边缘计算项目&#xff0c;客户要求对1080p视频流做实时预处理——既要跑Sobel边缘检测&#xff0c;又要加FIR滤波&#xff0c;还得控制功耗。一开始我们用树莓派OpenCV硬扛&#xff0c;结果帧率卡在15fp…

作者头像 李华
网站建设 2026/4/16 10:14:42

构建轻量级嵌入式OS:Yocto内核裁剪全面讲解

如何用 Yocto 打造极致轻量的嵌入式 Linux 系统&#xff1f;从内核裁剪讲起你有没有遇到过这样的场景&#xff1a;一块 64MB 的 Flash&#xff0c;跑不进一个“最小”Linux系统&#xff1b;设备冷启动要等七八秒&#xff0c;用户还没操作就已经失去耐心&#xff1b;明明只是个数…

作者头像 李华
网站建设 2026/4/15 18:42:48

小体积三脚电感在紧凑型EMI设计中的优势

小体积三脚电感&#xff1a;如何在“寸土寸金”的PCB上打赢高频噪声之战&#xff1f;你有没有遇到过这样的场景&#xff1f;产品已经进入EMC测试阶段&#xff0c;辐射发射&#xff08;RE&#xff09;曲线在300MHz附近突然冒起一个尖峰&#xff0c;反复调试无果&#xff1b;或者…

作者头像 李华
网站建设 2026/4/16 10:17:33

Multisim下载后提示缺少VC++库?图解说明解决流程

Multisim打不开&#xff1f;提示缺少MSVCP140.dll&#xff1f;别急&#xff0c;一招解决VC依赖问题 你有没有遇到过这种情况&#xff1a;好不容易从官网完成 multisim下载 &#xff0c;兴冲冲地双击启动&#xff0c;结果弹出一个红色警告框——“由于找不到 MSVCP140.dll …

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

大数据多维分析中的近似查询技术研究

大数据多维分析中的近似查询技术研究关键词&#xff1a;大数据、多维分析、近似查询技术、数据处理、查询效率摘要&#xff1a;本文聚焦于大数据多维分析中的近似查询技术。首先介绍了该研究的背景、目的、预期读者和文档结构等内容。接着详细解释了大数据、多维分析和近似查询…

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

2601C++,编写自己模块

编写一个模块并调用 看一下自定义模块的代码: //exportdemo.h export module demo; import std; namespace demo{ export int Add(int,int); export class exportDemo { public:exportDemo(); public:void display(); }; } //exportdemo.cpp module demo; import std; namespac…

作者头像 李华