zoukankan      html  css  js  c++  java
  • 题解 P4416 【[COCI2017-2018#1] Plahte】

    珂朵莉树吼哇,我永远喜欢珂朵莉.jpg

    题目链接

    Solution [COCI2017-2018#1] Plahte

    题目大意:给定(n)个互不相交(可能包含)的矩形,以及(m)个有颜色的点。询问每个矩形内部的点有多少种不同的颜色

    dsu on tree,扫描线


    分析:关键的条件是互不包含,也就是我们把每个矩形和最小的包含它的矩形连边,那么会形成一棵森林。

    这个可以用扫描线来完成,从左往右扫

    • 如果一个线段([l,r])是矩形的左边界,那么就将这个矩形和原来([l,r])内代表的矩形连边。之后我们将([l,r])赋值为该矩形

    • 如果一个线段([l,r])是矩形的右边界,那么我们就将([l,r])这段赋值为该矩形的父亲

    点当做矩形处理即可,注意边界问题。如果点和左边界横坐标相同,优先处理左边界

    维护线段树(珂朵莉树好写.jpg)

    这样我们建出一棵树,直接dsu on tree即可

    代码使用了右值引用等特性,请-std=c++11

  • 相关阅读:
    django ORM
    django扩展知识
    django视图层
    php常用四种算法
    文件操作函数
    PHP开发中数组操作大全
    php 字符 常用函数
    MySQL的WHERE语句中BETWEEN与IN的用法和他们的区别
    $_SERVER
    PHP魔术方法和魔术常量
  • 原文地址:https://www.cnblogs.com/colazcy/p/13702171.html
Copyright © 2011-2022 走看看