考试过程
没想到啊,早应该记住这个毒瘤出题人的名字的
刚开始状态还是挺好的,T1看了好久,有了一个比较模糊的思路
打表证伪,只打了暴力
然后看T2发现暴力很不好打,1h多才发现自己eoo读错题了,只是临位交换
还是没思路就去看T3,读完题发现样例没模过,考试进行了2h多了,正是及其混乱的时候
读不懂T3心态更是爆炸,只好出去溜了一圈,可算是有了活下去的勇气
接着写了T2的hash暴力然后又看T3可算看懂了,紧张地写暴力
现在要提升的还是要在每一场考试的中间,保持冷静!
题解
T2「贪心」「树状数组」
首先我们会发现,k一定是最大值,并且整个序列的最小值一定在最左端或最右端
我们考虑将它一步一步地移动到一端,相当与是走过的点都向反方向移动一位,并且贡献不会变
所以我们只需要找到左右两端最小的那个移动过去就好
那么处理完这个最小值之后,就又变成了一个子问题,
所以我们处理的顺序就是每次找到一个最小值,将它移动到左/右端
注意出现了多个最小值的情况,我们要移动的是当前的贡献最小的那个
即在所有相同的值中离两端最近的那个,否则的话,可能会出现,一个点与自己等高的多交换了一次
复杂度$O(n^2)$
我们再考虑一下对于每次移动,一定是最小值和比自己大的交换,而这些比它高的个数就是原序列中的从这个点到某一端,比它高的个数
树状数组处理就好了