Lexicographically Largest

看看官方题解,来用“exchanging argument”证明一下

假设不选最小的满足条件的\(v\),选了个更大的\(v_1\),那么对于最终的序列如果没有\(a_i+i-v\),那么显然将\(v_1\)换成\(v\)更好,否则的话考虑\(a_j+j-v_j=a_i+i-v(i<j)\),那么如果位置\(j\)可以选出一个\(v^{'}\)使得\(a_j+j-v^{'}=a_i+i-v_1\),那么让\(i\)\(v\)\(j\)\(v^{'}\)答案不变,否则的话\(j\)任选一个\(v_2\)都有\(a_j+j-v_2>a_i+i-v_1\),随便选一个\(v_2\),再重复上述过程(i.e.考虑是否存在\(k>j\),有\(k\)产生的数与此时\(j\)产生的数相同)

然后可以看看这个评论,他这么构造肯定是上界,但是我没有找到一种构造方法

update 2024.8.17

找到构造方法了。我们先将所有数加上下标得到新的数列(并将新数列从大到小排序)。如果说\(S\)是可重集的话,肯定就做完了。但现在\(S\)不是可重集,那么存在一种情况就是一些数可以被减一然后去填补空缺。举个例子,如果说新数列有三个\(7\)和两个\(1\),那么答案显然就是7 6 5 1 0,也就是说两个\(7\)填补了\(6,5\)这两个空缺,一个\(1\)填补了\(0\)这个空缺。不难想到一种构造方法,在保证已有的非空缺不会成为空缺的情况下,将非空缺多余的数全部向前移动。比如上面这个例子,非空缺有\(7\)\(1\)两个,\(7\)有三个副本,\(1\)有两个副本,我们在两个非空缺都至少保留一个副本的前提下,让剩余的副本向前移动。具体来说,我们观察新数列,假设\(1\)的第一个副本在\(7\)的第一个副本后面(比如新数列为7 1 1 7 7,那么\(7\)的第一个副本在位置一,\(1\)的第一个副本在位置二),那么我们把\(1\)放到多重集中(如果先放\(7\)的话,所有\(1\)的副本都会往前移动了),然后将新数列进行对应的改变(i.e.\(1\)的第一个副本后面所有的数全部减一),然后再考察这个新数列并重复上面的操作,用数学归纳法可以证明这个构造方法是上界

posted @ 2024-07-19 15:56  最爱丁珰  阅读(10)  评论(0)    收藏  举报