[题解]CF2226C-Mental Monumental (Easy Version)

题目链接

https://codeforces.com/contest/2226/problem/C

题目大意

已知数组c,每个元素对任意值取模,构成新数组,对新数组求最大mex

核心观察

  1. 对于元素 \(x\),取模后能产生 $ [0,(x-1)/2]+ \lbrace x \rbrace $ 的新值
  2. mex 具有单调性
    mex>=k <=> 0,1,...,k-1都存在
    mex>=k 能构造出来->mex>=k-1 肯定能构造出来
    mex>=k 不能构造->mex=k+1 肯定也不能构造

正确思路

答案介于 \([0,n]\),二分答案
设此时mex>=mid,在 c 之间扫一遍,如果存在 \([0,mid)\) 之间,保留,否则加入待选择数组,在这个待选择数组里从小到大去查看能否填充空缺。如果能填补完,则check=true

错误思路

我一直在死磕mex缺失怎么去填充数字,可能性太多了(用重复数字、从大到小),而没注意到mex自带单调性。
应该转换思路,从“如何构造答案”,转化为“验证答案能否为x”

总结

最大化mex
-> 判断 mex>=k
-> 判断0,...,k-1是否都能凑出来
-> 单调性
-> 二分答案

提交AC代码

https://codeforces.com/contest/2226/submission/373010982

posted @ 2026-04-29 03:03  Gusare  阅读(33)  评论(0)    收藏  举报