1 条题解
-
0
自动搬运
来自洛谷,原作者为

一扶苏一
休息结束。邮箱 yifusuyi@qq.com搬运于
2025-08-24 21:14:38,当前版本为作者最后更新于2018-05-20 15:20:03,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
[语言月赛202303] Milk Sales S 题解
Source & Knowledge
2023 年 3 月语言月赛,由洛谷网校入门计划/基础计划提供。
本题考察循环结构。
文字题解
题目大意
给定两个数列 ,要求找到最小的 ,满足 。
解析
算法一
一个简单的做法是从小到大枚举 ,然后每次计算 和 ,找到最小的 并比较。
for (int x = 1; x <= n; ++x) { long long sa = 0, sb = 0; for (int i = 1; i <= x; ++i) { sa += a[i]; sb += b[i]; } if (sa < sb) { ans = x; break; } }这一做法使用了一个循环嵌套。外层循环大小为 ,内层循环大小的上界也是 。
更具体的分析,循环的执行次数是 。也就是总的运算量大约有 次。可以通过 的数据。当 时, 达到了 级别。计算机一秒大约只能执行 次运算,所以无法通过本题。
算法二
观察算法一的代码,可以发现 和 事实上不需要每次都重新计算。
具体来说,假设上次循环已经求出了 ,那么本次要求的 。只需要用两个变量分别维护 和 ,当 增加时,把它们分别加上 和 并作比较即可。
long long sa = 0, sb = 0; for (x = 1; x <= n; ++x) { sa += a[x]; sb += b[x]; if (sa < sb) { ans = x; break; } }这份代码只用了一个长度为 的循环,运算量在 数量级,可以通过本题。
需要注意的是, 和 的最大值可能达到 。因此需要开
long long。视频题解
完整代码请在视频中观看。
- 1
信息
- ID
- 8436
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 1
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者