zoukankan      html  css  js  c++  java
  • Gym

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

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

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

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

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

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

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

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

  • 相关阅读:
    02-链路层
    01-TCP/IP概述
    ARM Cortex-A9 (tiny 4412)
    STM32 f407 温湿度采集报警
    arduino mega 避障报距小车
    归纳法调试
    python 数据类型Ⅲ(字典)
    Python 数据类型Ⅱ(列表,元祖)
    Python 数据类型(str,int,bool)
    Python while循环&格式化输出&运算符
  • 原文地址:https://www.cnblogs.com/Aragaki/p/11768243.html
Copyright © 2011-2022 走看看