• Gym


    给你数轴上的N条线段和K种颜色 K和N1e5 要你把这N条线段染色 使得有K种不同颜色的线段长度最长

    首先很容易想到被至少K段线段覆盖的区间是一定有贡献的 接下来就是怎么染色的问题

    我们把这N个区间的端点排序一下 把K个颜色放入一个队列

    碰到端点是左端点 先检查颜色队列是否为空 为空的话 把这个左端点放入一个待染队列

    为什么还需要一个待染队列? 因为如果当前区间已经被K条线段覆盖再来一条的话 我们不能随意染色 随意染色是会影响后面的答案的

    颜色队列不为空的话 我们就可以直接贪心地给这个线段染色

    碰到端点是右端点 看这个线段是否被染色 如果已经被染了 则直接回收这个颜色 push进队列里 如果没被染过的话 说明这个线段是在待染队列里且没有被染过的(即当前区间已经被K覆盖)我们随意染色即可

    算最终答案的话 每碰到一个端点检查颜色队列是否为空 为空则答案加上当前端点和前一个端点之间的距离

  • 相关阅读:
    Python的词法分析与语法分析
    使用svn log确定分支创建的时间点
    Python的作用域
    SVN的版本日期
    理解SVN关键词BASE,HEAD,COMMITTED,PREV
    SVN的属性
    EL表达式 (详解)
    java jsp el fn
    java防止表单重复提交
    数据库的事务处理
  • 原文地址:https://www.cnblogs.com/Aragaki/p/11768243.html
Copyright © 2020-2023  润新知