非常有意思的数学题!
首先也是最重要的转化:我们考虑假设现在是第iii步,只考虑xxx维度,若我们选择a+1a+1a+1的话,它会在i...ni...ni...n中都会贡献111,当iii从1...n1...n1...n中,贡献范围恰好是[1,n][1,n][1,n],yyy维度同理。
所以题目转化为:ppp从[1,n][1,n][1,n]中选若干数相加,qqq为剩余数相加。
既然这样,我们观察到p+q=n(n+1)2p+q=\frac{n(n+1)}{2}p+q=2n(n+1) 恒成立。
所以贪心来看,我们要求最大的nnn满足S=n(n+1)2≤x+yS=\frac{n(n+1)}{2}\le x+yS=2n(n+1) ≤x+y。
再看题目要求的与终点的最短距离:
D=(x−p)2+(y−q)2D=(x-p)^2+(y-q)^2D=(x−p)2+(y−q)2
转化:
D=(x−p)2+(y−S+p)2D=(x-p)^2+(y-S+p)^2D=(x−p)2+(y−S+p)2
根据这是一个关于ppp二次函数,对其求导为000能求到最小值:
−2(x−p)+2(y−S+p)=0-2(x-p)+2(y-S+p)=0−2(x−p)+2(y−S+p)=0
pbest=x−y+S2p_{best}=\frac{x-y+S}{2}pbest =2x−y+S
但pbestp_{best}pbest 可能取不到,左右正整数取最优即可,再把ppp的边界判清楚。
最后我们要处理xxx维度选的数和为pbestp_{best}pbest ,yyy维度为S−pbestS-p_{best}S−pbest 。这个我们只考虑xxx维度,从大到小贪心枚举iii即可,能减就减掉,根据我们第一步讲的,如果当前你选了iii,相当于你在n−i+1n-i+1n−i+1这个位置上在选择在xxx维度上+1+1+1。
这样我们就做完了。
所以@cjdst和lyy大佬场切太强了,让我们膜拜/bx /bx /bx