CF1552E: Colors and Intervals 题解
E:
题意:(妙妙构造)n*k的数列a,n种颜色每种k个。你需要每种颜色选两个位置,并覆盖这两个位置的区间。要求最终所有位置被覆盖的次数不超过 。请你构造方案。
这个 长的很抽象,没发现什么性质,让人很头痛。我们先想想一般性的思路。
我们一般会贪心选靠前的区间,当覆盖次数超过上限时再寻找下一个区间,但是如果我们按右区间排序,左端会乱跳,不太好统计最大覆盖次数。
我们可以不考虑具体如何覆盖,如果一个区块内我们只选了 个区间,那么无论这些区间怎么排列都不会超过覆盖上限。那么我们就每选出 个区间就分一个块。从块儿的右边再选区间。
Solution:
设 为第 i 种颜色第 j 次出现的位置。
我们先把 排序,取前 个颜色, 作为右端点, 为左端点,把这些颜色的答案确定下来。
接着再把 排序,在答案还未确定的颜色中选前 个颜色, 作为右端点, 作为左端点,把这些颜色答案确定下来。
你会发现第二次选的 个区间和第一次选的 个区间是没有重叠的(第一次选的最后一个颜色的右端点一定小于第二次的任意左端点),相当于分别在两个独立的块儿里。
一直这样排序,你会发现我们一共选了 次,每次确定 个颜色的答案,所以 次之后所有的颜色答案都确定下来了。
__EOF__

分类:
ACM
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具