考试总结 模拟$103$

考试过程

没想到啊,早应该记住这个毒瘤出题人的名字的

刚开始状态还是挺好的,T1看了好久,有了一个比较模糊的思路

打表证伪,只打了暴力

然后看T2发现暴力很不好打,1h多才发现自己eoo读错题了,只是临位交换

还是没思路就去看T3,读完题发现样例没模过,考试进行了2h多了,正是及其混乱的时候

读不懂T3心态更是爆炸,只好出去溜了一圈,可算是有了活下去的勇气

接着写了T2的hash暴力然后又看T3可算看懂了,紧张地写暴力

现在要提升的还是要在每一场考试的中间,保持冷静!

题解

T2「贪心」「树状数组」

首先我们会发现,k一定是最大值,并且整个序列的最小值一定在最左端或最右端

我们考虑将它一步一步地移动到一端,相当与是走过的点都向反方向移动一位,并且贡献不会变

所以我们只需要找到左右两端最小的那个移动过去就好

那么处理完这个最小值之后,就又变成了一个子问题,

所以我们处理的顺序就是每次找到一个最小值,将它移动到左/右端

注意出现了多个最小值的情况,我们要移动的是当前的贡献最小的那个

即在所有相同的值中离两端最近的那个,否则的话,可能会出现,一个点与自己等高的多交换了一次

复杂度$O(n^2)$

我们再考虑一下对于每次移动,一定是最小值和比自己大的交换,而这些比它高的个数就是原序列中的从这个点到某一端,比它高的个数

树状数组处理就好了

猜你喜欢

转载自www.cnblogs.com/casun547/p/11808768.html