CF896B Ithea Plays With Chtholly

原题

翻译

Chtholly可爱捏

我们先考虑如果ncm我们要怎么做,我们可以发现里面一定存在一个数出现了mc,不妨设这个数为x,因此我们只需要把所有数都改成x就可以了

等等好像不对,我们一开始并不知道这个数是什么,我们只能一个一个加,这要怎么办呢?

于是我们想到了一个策略:对于当前读入的数k,在ai中从左到右便利每一个数,找到最左边的ai>kai=0的位置,并把这个位置修改成k

这个做法是可以保证构造出长度mc的解的,理由如下:

  1. 若读入的k=x,则构造的长度显然mc

  2. 若读入的k>x,则若k出现在x后面,只会让答案增加而不减少;反之,他会被后面的x覆盖掉,构造的长度显然mc

  3. 若读入的k<x,则若k出现在x前面,只会让答案增加而不减少;反之,他会替换掉最前面一个x,对长度没有影响,构造的长度显然mc

因此我们只需要按照这个构造方案就必然可以构造一个长度n的答案


我们再回到原问题,考虑nc2m我们要怎么处理

我们使用同样的思路,把数分成c2>c2部分,分别处理,同理可以证明正确性:

c2的数的个数为k,则>c2的个数为mk

容易推出:

kc2+mkc22kc+2(mk)c2mcn

最终复杂度O(n2),用数据结构可以优化到O(nlogn)(但没必要)

posted @   FOX_konata  阅读(6)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示