这道题目肯定是要把逆序对的式子列出来
考虑(i1,j1)和(i2,j2)
若i1=i2,那么只需要j1>j2,也就是序列q的逆序对数
若i1≠i2,不妨设i2>i1,那么有pi1∗2j1>pi2∗2j2,即2j1−j2>pi2pi1
我们枚举i2,先把i2固定
如果pi1>pi2,那么统计一下在(pi2∗2j,pi2∗2j+1]中的pi1个数,那么此时j1−j2的范围就可以确定,利用乘法原理即可(一定要注意j1,j2是不会互相影响的)
update 2024.7.10
像这种分块讨论的思想(i1=i2表示在同一块,否则在不同块)可以记住,这里提示也是比较明显了
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构