2024百度之星题解 T2跑步
原题链接:跑步
关键词:数学、推公式、lcm、乘法逆元
算法分析:环形跑道相遇次数计算问题
一、最浅显性质分析
- 性质 a:跑 $ m = \text{lcm}{i|i \in [1,n]} $ 分钟。
- 其中 $ \text{lcm} $ 表示最小公倍数,$ m $ 为所有 1 到 n 的数的最小公倍数,确保时间足够覆盖所有周期。
- 性质 b:相遇一定是跑的快的追上跑得慢的。
二、根据性质 b 推导公式
设定条件:
设设 $ \forall i,j \in [1,n] $ 且 $ i > j $,即 $ j $ 跑的比 $ i $ 快。
相遇时间推导:
- 当 $ 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}
$
三、优化计算思路
- 重复计算优化:
对于每个 $ 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
$
四、计算复杂度分析
- **求最小公倍数 **** **:
传统方法:对每个数分解质因数,时间复杂度 $ O(n\sqrt{n}) $,效率较低。
优化思路:对于 1~n 的数,每个质因数 $ p $ 的最大指数为 $ \log_p n $,直接计算各质因数的最高次幂,时间复杂度 $ O(1) $(宏观分析)。
- 线性求解逆元:
- 用于分数计算优化,时间复杂度 $ O(n) $。
- 线性求多项式:
- 基于优化后的系数公式,遍历 1~n 计算各项贡献,时间复杂度 $ O(n) $。
总结
通过分析相遇性质、推导公式、优化重复计算及复杂度分析,该问题可通过线性时间算法解决,核心在于利用最小公倍数确定时间范围,并通过系数分解避免重复计算。
2024百度之星题解 T2跑步的更多相关文章
- 2014 百度之星 题解 1004 Labyrinth
Problem Description 度度熊是一仅仅喜欢探险的熊,一次偶然落进了一个m*n矩阵的迷宫,该迷宫仅仅能从矩阵左上角第一个方格開始走,仅仅有走到右上角的第一个格子才算走出迷宫,每一次仅仅能 ...
- 2018百度之星资格赛T2 子串查询
[题解] 很容易想到暴力做法:对于每个询问暴力查找区间内的最小字母,统计其出现次数.效率O(N^2),无法通过全部数据. 我们可以换一个思路,设f[i][j]为第i个字母(字母‘A'到’Z'分别对应0 ...
- 2014 百度之星题解 1002 - Disk Schedule
Problem Description 有非常多从磁盘读取数据的需求,包含顺序读取.随机读取.为了提高效率,须要人为安排磁盘读取.然而,在现实中,这样的做法非常复杂.我们考虑一个相对简单的场景. 磁盘 ...
- 百度之星初赛(A)——T2
数据分割 小w来到百度之星的赛场上,准备开始实现一个程序自动分析系统. 这个程序接受一些形如x_i = x_jxi=xj 或 x_i \neq x_jxi≠xj 的相等/不等约 ...
- 2016百度之星 初赛2A ABEF
只做了1001 1002 1005 1006.剩下2题可能以后补? http://acm.hdu.edu.cn/search.php?field=problem&key=2016%22%B0% ...
- 2016百度之星 资格赛ABCDE
看题:http://bestcoder.hdu.edu.cn/contests/contest_show.php?cid=690 交题:http://acm.hdu.edu.cn/search.php ...
- 百度之星B题(组合数)
Problem B Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others) Total ...
- 【HDU】6110 路径交(2017百度之星) 线段树+RMQ-LCA+树链的交
[题目]2017"百度之星"程序设计大赛 - 初赛(A) [题意]给定n个点的带边权树,m条编号1~m的路径,Q次询问编号区间[L,R]所有链的交集的长度.n<=500000 ...
- 【百度之星2014~复赛 解题报告~正解】The Query on the Tree
声明 笔者最近意外的发现 笔者的个人网站http://tiankonguse.com/ 的很多文章被其它网站转载,但是转载时未声明文章来源或参考自 http://tiankonguse.com/ 网站 ...
- 百度之星2017初赛A-1005-今夕何夕
今夕何夕 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submis ...
随机推荐
- 使用 GitHub Actions 构建 CosyVoice 项目的运行环境镜像并推送到阿里云容器镜像服务和 GitHub Package Registry
使用 GitHub Actions 构建 CosyVoice 项目的运行环境镜像并推送到阿里云容器镜像服务和 GitHub Package Registry 概述 本文介绍了如何使用 GitHub A ...
- Centos 7 关于防火墙的命令
有些人安装的linux的系统默认防火墙不是iptables,而是firewall,那就得使用以下方式关闭防火墙了. >>>关闭防火墙 systemctl stop firewalld ...
- TVM:使用张量表达式处理算子
在本教程中,把注意力转向 TVM 如何使用张量表达式(Tensor Expression,简称 TE)定义张量计算并应用循环优化.TE 以纯函数式语言描述张量计算(即每个表达式都没有副作用).从 TV ...
- Spring IoC容器添加组件的方式
小编在博文<Spring Bean是什么>中介绍了Bean的基本概念,这里详细地介绍如何注册bean. 1.包扫描@ComponentScan+组件标注注解 适用场景:可以通过该方 ...
- Spring Boot中使用注解实现简单工厂模式
前言 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫静态工厂模式(Simple Factory Pattern),但不属于23种GOF设计模式之一.简单工厂模式是由一个工厂对象决定创建出接 ...
- python实现字符输入实时读取
原理:通过opencv中的waitKey来实现 示例代码: def key_control(): while 1: cv2.imshow('tmp', np.zeros(shape=(100, 100 ...
- ARCHIV_CREATE_FILE 员工头像上传
*&---------------------------------------------------------------------* *& Report ZHRR_011 ...
- 鸿蒙HarmonyOS基础语法-循环-类型转化-事件
变量命名规则 1,只能包含数字.字母.下划线.$,不能以数字开头(4种类型) 2,不能使用内置关键字或保留字(比如 let.const) 3,严格区分大小写 声明方式 变量字符串,数字,布尔(与TS一 ...
- 直播预约丨《袋鼠云大数据实操指南》No.4:数据服务API实战解读,助力企业数字化跃迁
近年来,新质生产力.数据要素及数据资产入表等新兴概念犹如一股强劲的浪潮,持续冲击并革新着企业数字化转型的观念视野,昭示着一个以数据为核心驱动力的新时代正稳步启幕. 面对这些引领经济转型的新兴概念,为了 ...
- Python 潮流周刊#107:无 GIL Python 被正式批准(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 400+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...