CF 977 Review

CF 977 Review

掉大分了,我去,绿名也是可以掉分的,我去你简直太牛了sgh。

我是真正的飞舞。

A

排序以后贪心或者直接优先队列模拟即可,都可以过。

Code

B

分析

给定一个序列 anx>0 ,可以任意次数的将序列中的任意一个数加上 x ,求在最优操作下序列 mex 的最大值。

需要明确的是我们一定是要尽可能地让较小的数都能够存在。

因为只能执行加的操作 ,所以达成这一目的一定是要把 多余的 并且 更小的 数进行操作得到的。

那么我们只需要把序列sort一遍然后模拟即可,注意一遍模拟一遍检查是否出现答案,还要记录当前数字的个数。

复杂度 O(nlogn) 可以通过。

Code

C(easy)

题意不多赘述,因为太难赘述了。

分析

先看一组样例 :

a:1 2 3 4
b:1 2 3 4 2 3 4 1 2 3 1 4

你会发现只要前四个能够匹配上,好像后面一定能够满足。

那如果我后面八个再写杂乱无章一点,比如 2 1 3 2 1 4 1 2 ,会发现无论怎么写都一定能够满足。

那如果我再写的极限一点:

a:1 2 3 4
b:1 2 3 2 3 4 1 2 3 1 4

这下好像仍然可以,但前四个就不一定一样了。

看看样例里面不合法的一个情况呢?

a:3 1 4 2 5
b:3 1 4 5 2 3 4

这下前三个相同,但是又不合法了,说明和前几位相同实际上没有什么必要的关系。

多举几组反例会发现,b 里面的数字必须按照 a 中的顺序出现,言下之意,当 ai 没有第一次出现的时候,ai+1 就不能先出现,因为此时就不可以通过操作使 ai+1 出现在 ai 前面。

根据以上分析,我们只需要记录每个 ai 第一次出现的位置即可。或者说直接按位匹配,不合法就直接输出。

(写的时候差临门一脚了,还是自己太笨了,脑子转的不够快)

(去重并不是必要的)

C(hard)

挖个坑

D

这个太难了暂时不补了

E

挖个坑

posted @   Hanggoash  阅读(17)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效
动态线条
动态线条end
点击右上角即可分享
微信分享提示