首页 > 其他分享 >Atcoder题解:Arc156_c

Atcoder题解:Arc156_c

时间:2023-02-19 14:12:42浏览次数:49  
标签:Atcoder 子树 重心 题解 Arc156 vector text 配对 我们

数据范围 \(10^5\),但是介绍一个 \(O(n\log n)\) 做法。

我们考虑观察样例,发现样例都很小,而且 \(\text{LCS}\) 的长度都是 \(1\),那么我们就猜答案最多为 \(1\),并尝试去构造。

我们画一个链,发现链上的统配解就是倒过来。那么我们考虑普通的树,我们发现,普通的树比链的性质更强一些。

我们可以找到树的重心,将其分割成若干个子树。然后安排每个子树中的值到别的地方去。这样可以保证每个子树中的数都在别的子树中。

然后,我们需要按照拓扑序倒着往里填。例如,子树 \(A\) 中 \(x\) 在最上面,填进子树 \(B\) 的时候 \(x\) 也要在最上面。如此,在任何的 \(x\) 链上,\(x\) 和 \(x\) 子树中的值都是逆序出现的,最多造成 \(1\) 的贡献。

如果树有两个重心,从重心边分成两棵树直接填充。

如果树只有一个重心,将所有分割出的子树从重心开始的 \(\text{dfs}\) 序跑出来存在 \(\text{vector}\) 里面,每次找到最大的两个 \(\text{vector}\) 进行配对。我们发现,如果我们可以把 \(x\) 放在 \(y\),也可以把 \(y\) 放在 \(x\)。这样,因为是重心,剩下的节点最多只有 \(1\) 个,如果剩下了,就和重心配对,否则重心和自己配对。

每次找到最大的 \(\text{vector}\) 需要使用 \(\text{priority_queue}\) 维护 \(\text{vector}\) 大小和下标,每次弹出后更新大小加入。总复杂度 \(O(n\log n)\)。

标签:Atcoder,子树,重心,题解,Arc156,vector,text,配对,我们
From: https://www.cnblogs.com/jucason-xu/p/17134667.html

相关文章

  • 2023 年 CCF 春季测试赛模拟赛 - 1 题解
    T1美丽校园标准解法很容易想到:从\(1\)出发向\(t\)走的路径不容易得到,而从\(t\)向\(1\)的路径只需要每次走到当前点的父节点。因此问题转化为:求从\(t\)向根......
  • ACwing 区间最大公约数题解 线段树(附证明)
    算进区间最大公因数单点线段树 https://www.acwing.com/problem/content/247/题目:给定一个长度为N的数列A,以及M条指令,每条指令可能是以下两种之一:Clrd,表......
  • ABC261E 题解
    前言题目传送门!更好的阅读体验?这题另外两篇题解写的啥啊,这里提供一个非常好理解的做法。思路......
  • k8s学习-记录一次集群kube-controller,scheduler等多个pod重启的问题解决
    问题一次,集群的kube-controller,scheduler等容器重启,查看日志,发现时间很集中,在秒级范围内多个pod同时重启。查看pod状态kubectlgetpod-nkube-system|grepkube-contro......
  • ModuleNotFoundError: No module named 'selenium'问题解决
    1.打开Python文件的安装目录python3.exe所在文件夹,按住Shift键+鼠标右击,然后输入python3.exe-mpipinstall--upgradepip,跟新pip。 2.打开Python文件的安装目录Script......
  • DCDC电源SW电压尖峰过冲问题解析
    BUCK电源SW电压尖峰过冲问题产生原因:  (示波器正常测试时须关闭20M带宽限制)  ①器件本身的寄生电感以及寄生电容造成的,主要是电感电容器件的谐振频率。  ②功率电感......
  • 【题解】U281338 分书
    自创题题目解析考虑可以先去看Sam数从标签我们可以知道,需要使用矩阵加速考虑这道题一眼看出是一道DP题(毕竟是熟悉的背包加了一个上限)再看每一种人的人数\(10^9\)!(蒙了)......
  • Toyota Programming Contest 2023 Spring Qual A(AtCoder Beginner Contest 288)[A - F]
    原比赛链接A-ManyA+BProblemsA-AC代码#include<bits/stdc++.h>usingnamespacestd;intt,a,b;intread(){ intx=0,w=1; charch=getchar(); w......
  • P5902 [IOI2009] salesman 题解
    题目链接题意船向上游移动1米花费\(U\)元,向下移动1米花费\(D\)元。沿河有\(N\)个展销会,对于第\(i\)个展销会,它的日期为\(T_i\),它的位置为\(L_i\),可获得盈......
  • YACS 2023年2月月赛 甲组 T1 自由贸易 题解
    题目链接上来一看题和数据范围基本就是DP了,问题是状态怎么设计呢?如果我们仅仅设$f[i]$为到第$i$个水果时的最大分数,那么显然会发现无法处理当前水果的分数贡献。......