设有两个长为 n 的单调不降的数列,分别为 A=(a1,a2,⋯,an) 和 B=(b1,b2,⋯,bn),(p1,p2,⋯,pn) 是自然数 1 到 n 的任意一个排列,则有:
n∑i=1aibn−i+1≤n∑i=1aibpi≤n∑i=1aibi
简记:逆序和小于等于乱序和小于等于顺序和。
令 xi=∑ij=1bj,yi=∑ij=1bpj,zi=∑ij=1bn−j+1。
易得:当 i<n 时,xi≤yi≤zi。xn=yn=zn。
∵ai−ai+1≤0
∴(ai−ai+1)xi≥(ai−ai+1)yi≥(ai−ai+1)zi
因为(展开即可推出):
anxn+n−1∑i=1(ai−ai+1)xi=n∑i=1aibi
anyn+n−1∑i=1(ai−ai+1)yi=n∑i=1aibpi
anzn+n−1∑i=1(ai−ai+1)zi=n∑i=1aibn−i+1
所以:
n∑i=1aibn−i+1≤n∑i=1aibpi≤n∑i=1aibi
因为:
∑(ai−bi)2=∑a2i+∑b2i−∑aibi
所以只要让 ∑aibi 最大即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通