【题解】P5278 算术天才⑨与等差数列

有趣的乱搞做法和一个没想到的 trick,一起记一下。

思路

线段树 + 哈希 / trick.

首先是乱搞做法。

意识到可以像 P3792 由乃与大母神原型和偶像崇拜 那个被疯狂 hack 的题 一样考虑哈希,可以考虑直接用和。

一个区间能重排成公差为 k 的等差数列,那么其中的每个数都可以被表示成 x+ki 的形式,其中 x 是区间最小值。

于是排序后的区间平方和等于 i=0rl(x+ki)2.

展开一下,和真实的区间平凡和比较一下就行。

因为数比较大,随便找个大模数模一下就行,求稳可以用双哈希。

注意和相等不是可以重排的充分条件,而是必要条件。


正解:

所有数都等于 x 的充要条件:所有数的 gcdx.

类似地考虑所有数的公差都等于 k 的充要条件:

  1. 所有数的和一定。

  2. 所有相邻两数之差的 gcdk.

  3. 所有数不重复。

所以只需要用线段树维护一下区间最值、区间平方和以及是否不重就行,时间复杂度 O(nlogn).

代码

只写了乱搞,正解有点小长。

posted @   kymru  阅读(28)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示
主题色彩