原题链接:跑步

关键词:数学、推公式、lcm、乘法逆元

算法分析:环形跑道相遇次数计算问题

一、最浅显性质分析

  1. 性质 a:跑 $ m = \text{lcm}{i|i \in [1,n]} $ 分钟。
  • 其中 $ \text{lcm} $ 表示最小公倍数,$ m $ 为所有 1 到 n 的数的最小公倍数,确保时间足够覆盖所有周期。
  1. 性质 b:相遇一定是跑的快的追上跑得慢的。

二、根据性质 b 推导公式

  1. 设定条件

    设 $ \forall i,j \in [1,n] $ 且 $ i > j $,即 $ j $ 跑的比 $ i $ 快。

  2. 相遇时间推导

  • 当 $ j $ 套 $ i $ 一圈时,满足:

$

\frac{t}{j} - \frac{t}{i} = 1

$

解得相遇一圈的时间:

$

t = \frac{i \cdot j}{i - j}

$

  • 在 $ m $ 分钟内,$ i $ 和 $ j $ 相遇的次数为:

$

\frac{m}{t} = \frac{m(i - j)}{i \cdot j} = \frac{m}{j} - \frac{m}{i}

$

三、优化计算思路

  1. 重复计算优化
  • 对于每个 $ x $(表示第 $ x $ 个人):

    • 有 $ x-1 $ 个人比 $ x $ 快,对应 $ -\frac{m}{x} $ 的系数为 $ x-1 $;

    • 有 $ n-x $ 个人比 $ x $ 慢,对应 $ \frac{m}{x} $ 的系数为 $ n-x $;

  • 综上,$ \frac{m}{x} $ 的总系数为:

$

(n - x) - (x - 1) = n - 2x + 1

$

四、计算复杂度分析

  1. **求最小公倍数 **** **:
  • 传统方法:对每个数分解质因数,时间复杂度 $ O(n\sqrt{n}) $,效率较低。

  • 优化思路:对于 1~n 的数,每个质因数 $ p $ 的最大指数为 $ \log_p n $,直接计算各质因数的最高次幂,时间复杂度 $ O(1) $(宏观分析)。

  1. 线性求解逆元
  • 用于分数计算优化,时间复杂度 $ O(n) $。
  1. 线性求多项式
  • 基于优化后的系数公式,遍历 1~n 计算各项贡献,时间复杂度 $ O(n) $。

总结

通过分析相遇性质、推导公式、优化重复计算及复杂度分析,该问题可通过线性时间算法解决,核心在于利用最小公倍数确定时间范围,并通过系数分解避免重复计算。

2024百度之星题解 T2跑步的更多相关文章

  1. 2014 百度之星 题解 1004 Labyrinth

    Problem Description 度度熊是一仅仅喜欢探险的熊,一次偶然落进了一个m*n矩阵的迷宫,该迷宫仅仅能从矩阵左上角第一个方格開始走,仅仅有走到右上角的第一个格子才算走出迷宫,每一次仅仅能 ...

  2. 2018百度之星资格赛T2 子串查询

    [题解] 很容易想到暴力做法:对于每个询问暴力查找区间内的最小字母,统计其出现次数.效率O(N^2),无法通过全部数据. 我们可以换一个思路,设f[i][j]为第i个字母(字母‘A'到’Z'分别对应0 ...

  3. 2014 百度之星题解 1002 - Disk Schedule

    Problem Description 有非常多从磁盘读取数据的需求,包含顺序读取.随机读取.为了提高效率,须要人为安排磁盘读取.然而,在现实中,这样的做法非常复杂.我们考虑一个相对简单的场景. 磁盘 ...

  4. 百度之星初赛(A)——T2

    数据分割 小w来到百度之星的赛场上,准备开始实现一个程序自动分析系统. 这个程序接受一些形如x_i = x_jx​i​​=x​j​​ 或 x_i \neq x_jx​i​​≠x​j​​ 的相等/不等约 ...

  5. 2016百度之星 初赛2A ABEF

    只做了1001 1002 1005 1006.剩下2题可能以后补? http://acm.hdu.edu.cn/search.php?field=problem&key=2016%22%B0% ...

  6. 2016百度之星 资格赛ABCDE

    看题:http://bestcoder.hdu.edu.cn/contests/contest_show.php?cid=690 交题:http://acm.hdu.edu.cn/search.php ...

  7. 百度之星B题(组合数)

    Problem B Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others) Total ...

  8. 【HDU】6110 路径交(2017百度之星) 线段树+RMQ-LCA+树链的交

    [题目]2017"百度之星"程序设计大赛 - 初赛(A) [题意]给定n个点的带边权树,m条编号1~m的路径,Q次询问编号区间[L,R]所有链的交集的长度.n<=500000 ...

  9. 【百度之星2014~复赛 解题报告~正解】The Query on the Tree

    声明 笔者最近意外的发现 笔者的个人网站http://tiankonguse.com/ 的很多文章被其它网站转载,但是转载时未声明文章来源或参考自 http://tiankonguse.com/ 网站 ...

  10. 百度之星2017初赛A-1005-今夕何夕

    今夕何夕 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submis ...

随机推荐

  1. 使用 GitHub Actions 构建 CosyVoice 项目的运行环境镜像并推送到阿里云容器镜像服务和 GitHub Package Registry

    使用 GitHub Actions 构建 CosyVoice 项目的运行环境镜像并推送到阿里云容器镜像服务和 GitHub Package Registry 概述 本文介绍了如何使用 GitHub A ...

  2. Centos 7 关于防火墙的命令

    有些人安装的linux的系统默认防火墙不是iptables,而是firewall,那就得使用以下方式关闭防火墙了. >>>关闭防火墙 systemctl stop firewalld ...

  3. TVM:使用张量表达式处理算子

    在本教程中,把注意力转向 TVM 如何使用张量表达式(Tensor Expression,简称 TE)定义张量计算并应用循环优化.TE 以纯函数式语言描述张量计算(即每个表达式都没有副作用).从 TV ...

  4. Spring IoC容器添加组件的方式

      小编在博文<Spring Bean是什么>中介绍了Bean的基本概念,这里详细地介绍如何注册bean. 1.包扫描@ComponentScan+组件标注注解   适用场景:可以通过该方 ...

  5. Spring Boot中使用注解实现简单工厂模式

    前言 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫静态工厂模式(Simple Factory Pattern),但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出接 ...

  6. python实现字符输入实时读取

    原理:通过opencv中的waitKey来实现 示例代码: def key_control(): while 1: cv2.imshow('tmp', np.zeros(shape=(100, 100 ...

  7. ARCHIV_CREATE_FILE 员工头像上传

    *&---------------------------------------------------------------------* *& Report ZHRR_011 ...

  8. 鸿蒙HarmonyOS基础语法-循环-类型转化-事件

    变量命名规则 1,只能包含数字.字母.下划线.$,不能以数字开头(4种类型) 2,不能使用内置关键字或保留字(比如 let.const) 3,严格区分大小写 声明方式 变量字符串,数字,布尔(与TS一 ...

  9. 直播预约丨《袋鼠云大数据实操指南》No.4:数据服务API实战解读,助力企业数字化跃迁

    近年来,新质生产力.数据要素及数据资产入表等新兴概念犹如一股强劲的浪潮,持续冲击并革新着企业数字化转型的观念视野,昭示着一个以数据为核心驱动力的新时代正稳步启幕. 面对这些引领经济转型的新兴概念,为了 ...

  10. Python 潮流周刊#107:无 GIL Python 被正式批准(摘要)

    本周刊由 Python猫 出品,精心筛选国内外的 400+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...