Codeforces Round 932 (Div. 2)题解(c、d)
Codeforces Round 932 (Div. 2)
C. Messenger in MAC
题目大意
给定一些,选出尽量多的,使得小于给定的。
题目解析
由于题目没有要求是升序排列的序列,因此我们可以改变的顺序。注意到的值是无法改变的,可以通过改变 的顺序改变大小。考虑到贪心,最终一定有。
(假设有 ,一定是 )
因此先按照的大小对序列 进行排序,假设选择了从的若干对 ,一定有 (已经对 排序了,所以一定是升序排列),接着只要处理即可。
我们不妨考虑双指针的写法进行 遍历:固定住最左边的数字后,不停的向右移动指针。令表示当前的,每次向右移动指针时,,同时通过优先队列,将所有的从大到小的排序,每当答案过大时,就从优先队列中排除若干个,直到小于为止。
D. Exam in MAC
题目大意
给定一个大小为 n
的集合 s
和一些奇怪的整数 c
。对于这个集合,需要计算整数对 (x,y)
的数量,使得 0 ≤ x ≤ y ≤ c
,x+y
不包含在集合 s
中,且 y-x
也不包含在集合 s
中。
题目解析
考虑鸽笼原理。我们记""为条件一,""为条件二,若需要两者都不满足,可以写为:
即减去满足条件一的的数量、满足条件二的数量后,再加上满足两个条件的数量。
- 对于条件一:假设,则满足此条件的有 对。
- 对于条件二:假设,则需要注意,,一共有 对 满足此条件。
- 对于条件一和条件二同时满足:假设 ,有 ,且是偶数,因此必须是奇数加奇数、偶数加偶数的形式。假设中有个奇数,则只选择奇数作为会产生个符合条件的(对于中第一个奇数,有个数字和其能匹配;对于第二个奇数,由于大于第一个奇数,所以只能和第二个及以后的数字匹配),偶数同理。
__EOF__

本文作者:seekerzhz
本文链接:https://www.cnblogs.com/zhaohanzheng/p/18145873.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/zhaohanzheng/p/18145873.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
2022-04-19 石子游戏 II