![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
分治
文章平均质量分 54
逍遥Fau
为伊蕾娜献上心脏!
展开
-
HDU7136 Jumping Monkey (点分治 + 树状数组)
题目链接: Jumping Monkey 大致题意 给定一个有nnn个节点的树, 每个节点有一个权值wiw_iwi(保证点权两两不同). 节点aaa可以移动到节点bbb, 当且仅当wbw_bwb是(a,b)(a, b)(a,b)最短路径上权值最大的点. 问: 当分别以k (k∈[1,n])k \ (k \in [1, n])k (k∈[1,n])为起始点, 最多能到达多少个不同的点. 解题思路 点分治 + BIT 本题解就当存一份代码吧, 隔得太久了, 已经忘了当时比赛的时候是怎么想原创 2021-11-15 19:37:11 · 649 阅读 · 0 评论 -
P4149 Race (点分治)
题目链接: P4149 Race 大致题意 QAQ 解题思路 点分治 考虑到对于每一个分治重心而言, 可能产生的答案贡献分为两种: ①某棵子树与重心 ②两棵不同的子树内部的点 对于情况①, 我们在统计每棵子树情况时, 直接计算答案即可. 对于情况②, 我们在统计当前子树情况时, 判断是否能和之前已经统计过答案的子树产生贡献即可. AC代码 /** * Author: Fau * Time: 2021-07-06 12:58 **/ #include <bits/stdc++.h> #de原创 2021-07-06 13:18:44 · 59 阅读 · 0 评论 -
Gene Tree (点分治)
题目链接: Gene Tree 大致题意 给你一棵树, 要求你求出所有叶子结点的距离平方和. 解题思路 点分治 (这个题是可以线性出的QAQ) 因为是处理点与点之间的问题, 我们可以考虑一下点分治能否实现. 本题要求求出所有叶子结点之间的距离, 我们发现这符合点分治处理子树与子树这一性质. 那么我们每次以点x为重心时, 我们需要计算的贡献是, 经过点x的两个叶子结点的距离平方和. 比较好想的方法是, 每次计算当前子树时, 把当前子树的所有叶子节点与之前所有子树的叶子节点统计贡献. 但是这样最坏的情况会是**原创 2021-05-29 20:18:03 · 149 阅读 · 0 评论 -
a-Good String
题目链接: a-Good String 大致题意: 给定一个长度为n = 2k的字符串. 且有如下定义 如果一个串的长度为1, 则称为 X-good串 (X为小写字母) 否则如果串的长度大于1, 如果前半部分只包含字符X, 则称为X-good串, 则后半段应该为(X+1)-good串, 反之亦然. 现在给定你一个字符串, 你可以将其中的一个字符修改成任意的小写字母, 问至少修改多少次可以使串为a-good串. 解题思路: 分治求解, 枚举每一种情况即可. 复杂度为nlogn AC代码: #include &原创 2020-10-11 22:23:31 · 500 阅读 · 0 评论