原题
翻译
感觉挺好的题,但说不定挺典的?
我一开始想到了值域分块的思路,但之后就一直想整除、余数组合之类的。学数论学的
首先很容易想到min(ai,aj)≤2n,于是我们考虑枚举小的那个数
我们直接枚举小的ai的值为k,通过k我们可以找到所有ai=k的位置
先考虑ai=aj=k的情况,我们枚举每个值为k的位置i,我们可以得到满足条件的bj=k2−bi,因此我们只需要对前缀ai=k开一个桶,下标是bi的值即可
然后考虑ai=k<aj的情况,我们枚举所有值>k的位置。我们现在易知的信息显然有:k,aj,bj,我们可以求出bi=k×aj−bj,我们同样可以用桶的思路找到所有ai=k,bi=k×aj−bj的个数
最终复杂度O(nn)
哦懂了懂了,等比数列求和。
(3) 到 (4) 是怎么转移的,大佬orz
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?