AT_pakencamp_2020_day1_k Gcd of Sum题解

Link

我们可以发现几个简单的小性质:

  1. 最终的答案一定是 ∑ i = 1 N A i \sum_{i=1}^{N} A_i ∑i=1NAi 的约数。
  2. 假设最后的答案是 g g g,我们先对 A A A 做一下前缀和 s s s,由于答案要划分成若干连续子序列,所以一定存在若干个 i i i 使得 g ∣ s i g|s_i g∣si,这些位置都是可以作为划分点的。显然,如果存在 k k k 个划分点,则我们可以将序列划分至多 k + 1 k+1 k+1 份,少于 k + 1 k+1 k+1 份也一定是可以划分出来的。

于是我们枚举 ∑ i = 1 N A i \sum_{i=1}^{N} A_i ∑i=1NAi 的约数 g g g,对于每个约数扫一遍序列求出划分点的数量 k k k,对于 1 1 1 到 k k k 的答案全部对 g g g 取 max ⁡ \max max 即可。

时间复杂度 O ( M N ) O(\sqrt{M} N) O(M N),其中 M = ∑ i = 1 N A i M=\sum_{i=1}^{N} A_i M=∑i=1NAi。不过显然 M M M 的约数不会很多,这个是跑不满的。

相关推荐
GreenTea4 小时前
深度解读 Anthropic 多智能体报告:更强的模型 ≠ 更好的协调
前端·后端·算法
码匠许师傅4 小时前
【C++ 面试真题】聊聊 C++ 的移动语义与右值引用
java·c++·面试
fqq35 小时前
力扣刷题前置Java语法
算法·leetcode·职场和发展
小小龙学IT6 小时前
DuckDB 深度实战:用 C++ 在进程内跑一个「分析型数据库」
数据库·c++
知无不研7 小时前
lambda表达式的使用(3)
开发语言·c++·lambda
2501_906565127 小时前
数学之美探究
算法
oier_Asad.Chen8 小时前
【洛谷题解/AcWing题解/OI学习笔记】洛谷P2868【USACO07DEC】Sightseeing Cows G(01分数规划求最大比率)
算法·图论·spfa·二分·负环
C++ 老炮儿的技术栈9 小时前
基于Qt实现轻量化本地音乐播放器
开发语言·c++·qt·c·播放器·音乐
leisoo80979 小时前
财报数据怎么排雷本地化Python构建财务异常预警系统
人工智能·python·算法
qz_Serene11 小时前
C++:类和对象(上)
开发语言·c++