首页 > 其他分享 >树的难题 BJOI2017 点分治 单调队列

树的难题 BJOI2017 点分治 单调队列

时间:2022-08-30 23:33:06浏览次数:79  
标签:颜色 队列 线段 分治 合并 BJOI2017 边数

P3714 [BJOI2017]树的难题

没时间码 先口胡。

明显有一个n^2的暴力。可以拿到20分。

链的情况也非常容易 一个简单的单调队列 就可以解决 当然可以暴力的采用线段树。
这样可以拿到40分。

对于60分 直接考虑线段树合并 利用线段树维护每种颜色的最大值 由于不考虑边数问题。

对于80分 由于总颜色很少 考虑每个点处开颜色个数颗线段树维护深度。

利用线段树合并再每个颜色单独做 复杂度大概两个log的样子 可以过80

不过以上均为口胡没有实现。

考虑100分 容易发现线段树合并失效了 至少需要线段树套线段树才能同时维护边数和颜色。

考虑上点分治来维护边数这个限制。

对于一个重心x 我们将所有的链抽出来进行两条链之间的合并。

分为两种同颜色的合并 不同颜色的合并。发现同时做非常难以处理。

但是我们调换顺序将同颜色的放一块处理 处理时使用单调队列维护即可。

复杂度 nlogn 代码咕咕咕。

标签:颜色,队列,线段,分治,合并,BJOI2017,边数
From: https://www.cnblogs.com/chdy/p/16641361.html

相关文章

  • [洛谷P5787] 线段树时间分治
    题目大意给\(n\)个点\(m\)条边,在\(k\)时间内,第\(i\)条边只在\([l_i+1,r_i]\)的时间范围内存在。对于每个\(i\leqk\),输出\(i\)时刻这个图是否是二分图。题......
  • 队列
    什么是队列(Queue)?队列(queue)是一种采用先进先出(FIFO,firstinfirstout)策略的抽象数据结构。比如生活中排队,总是按照先来的先服务,后来的后服务。队列在数据结构中举足轻重,其......
  • 厚积薄发--一文带您了解阿里云 RocketMQ 轻量版消息队列(MNS)
    作者:周新宇&陈涛&李凯阿里云RocketMQ轻量版(MNS)消息队列是一个轻量、可靠、可扩展且完全托管的分布式消息队列服务。MNS能够帮助应用开发者在他们应用的分布式组件上更......
  • 如何解决消息队列的延时以及过期失效问题?
    如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?面试官心理分析你看这问法,其实本质针对的场景,都是说,......
  • 共享栈和双端队列
    一、算法设计思想1.ABCD顺序入栈,任意时刻出栈,共多少种排列(Catalan数:(1/n+1)·C2nn)       一定不存在这种情况:i<j<k,Str[i]>Str[k]>Str[j]。只需要在全排列的基......
  • 如何保证消息队列的高可用?
    如何保证消息队列的高可用?面试官心理分析如果有人问到你MQ的知识,高可用是必问的。上一讲提到,MQ会导致系统可用性降低。所以只要你用了MQ,接下来问的一些要点肯......
  • 队列
    一、结构体定义1.顺序队typedefstruct{ intdata[maxSize]; intfront,rear;}SqQueue;2.链队(1)队结点类型typedefstructQNode{ intdata; structQNode*ne......
  • 分治算法(汉诺塔)
    1.分治算法介绍1)分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最......
  • 消息队列面试题
             ......
  • 优先队列-多路归并系列题解
    373.查找和最小的K对数字问题描述给定两个以升序排列的整数数组nums1和nums2 , 以及一个整数k 。定义一对值 (u,v),其中第一个元素来自 nums1,第二个元素来......