CF Round 982(Div 2)
游记
还是VP
口胡了ABCD
的做法,然后C
假了
打代码其实挺难的
题解
A
反复观看样例可知,如果两个开关状态不一样灯泡开,否则灯泡关
如果要灯泡开着的尽可能少,那么相同状态的配对尽可能多
此时就是
如果有落单的
没有就是
反之要灯泡开得多,那么
此时答案就是min(cnt[0],cnt[1])
,
其中cnt[i]
就是满足
B
如果从数组中删掉
这两半中,左半边不管怎么分,各部分中位数必然小于
因为最大数都小于
同理右半边不管怎么分,各部分中位数必然大于
那如果各部分中位数组成的数组,这个中位数如果是
其实只需要两边划分出相同的段数即可
如果左右两边都是偶数个元素,那就各分成两个奇数的段
此时
否则两边都不用动,就一整段,此时
唯一需要考虑的就是一半边为空的情况
此时只有另一半边也为空才行
也就是无解判断:
如果
C
对于能否构成三角形来说,
如果两个小边加起来大于最大的边,那必然可以构成三角形
所以如果钦定
首先大于
然后如果
那么显然
所以至多存在唯一的
然后就是对
枚举每个
两个下标lower_bound()/upper_bound()
一下即可
不在这个区间范围的都要改成
取改的次数的最小值即可,这个显然可以
枚举
排序时间复杂度
总时间复杂度
写法在下取整和二分的时候挺麻烦的,有些细节要注意
D
首先,如果
其次,这棵树切开
这样的话首先考虑同一层的节点
记
如果
那么中间空着的这么几条链必然不可能连上任何大于
否则
也就是说,可用的链顶
那么就直接找链顶有多少即可
显然由于BFS
序的关系,
也就是说我们直接找到
然后对于每个
直接问
如果
如果找到了对应的
注意如果只剩下了
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 推荐几款开源且免费的 .NET MAUI 组件库
· 实操Deepseek接入个人知识库
· 易语言 —— 开山篇
· Trae初体验