随笔分类 -  图论-树上问题

摘要:题目描述 分析 考虑自底向上贪心 \(f[x][k]\) 表示 \(x\) 下面距离为 \(k\) 的需要灭火器的房间数,\(g[x][k]\) 表示 \(x\) 下面距离为 \(k\) 的多余灭火器数 每个灭火器和房间的匹配在 \(lca\) 处处理 每次假设子树里已经最优了,那么 \(f[x][ 阅读全文
posted @ 2020-10-29 11:19 liuchanglc 阅读(65) 评论(0) 推荐(0)
摘要:题目描述 分析 一条边只会在枚举它因子作为答案时才有用 所以,我们考虑从 $1$ 到最大值枚举答案 \(w\),把所有倍数是 \(w\) 的边连起来 在形成的森林中跑一个直径 这样相当于把每条边分成因子个数条边 注意,你不能一开始就建好图然后在枚举时打标记,这样你走的边会变多 时间复杂度 \(O(n 阅读全文
posted @ 2020-10-22 10:43 liuchanglc 阅读(114) 评论(0) 推荐(0)
摘要:题目描述 分析 因为一个节点被放了小球后,它的所有祖先节点都要放小球 所以我们可以在递归的时候再把儿子的贡献上传 对于没有小桶限制的情况,显然是一个 \(dsu\) 的板子 对于有小桶限制的情况,关键是怎么处理重复的颜色 我们可以开一个数组记录一下当前颜色最早出现在哪一次操作中 统计当前颜色答案的时 阅读全文
posted @ 2020-10-19 15:45 liuchanglc 阅读(120) 评论(2) 推荐(1)
摘要:题目描述 分析 考虑离线处理之后建树 如果 \(a_1,a_2,...,a_k\) 的交是 \(b\) 那我们从 \(b\) 到 \(a_1,a_2,...,a_k\) 建一条边权为 $0$ 的边 同样地,如果 \(a_1,a_2,...,a_k\) 的并是 \(b\) 那我们从 \(b\) 到 \ 阅读全文
posted @ 2020-10-17 11:24 liuchanglc 阅读(130) 评论(0) 推荐(0)
摘要:题目描述 这题太虎了,所以没有背景。 给你一棵树,边有黑白两种颜色,你每次可以选择两个点,把这两个点之间的唯一简单路径上的所有边颜色取反,某些边要求最终颜色必须是黑色,还有些边没有要求,问最少操作多少次能达到目的 输入格式 第一行一个整数 \(n\),代表点数 接下来$n-1$行,每行三个数$x,y 阅读全文
posted @ 2020-10-12 09:09 liuchanglc 阅读(104) 评论(0) 推荐(1)
摘要:题目描述 分析 对于 $20%$ 的数据,我们随便写个搜索就可以了 对于 $100%$ 的数据,建图的方式很神奇 我们从一张卡牌背面的数字向其正面的数字连边 这样问题就转化为了翻转最少的边,使得所有点的入度不超过一 为了方便处理,我们从正面向反面建一条权值为一的边,从反面向正面建一条权值为零的边 这 阅读全文
posted @ 2020-10-09 18:03 liuchanglc 阅读(219) 评论(1) 推荐(2)
摘要:题目描述 一棵根为$1$ 的树,每条边上有一个字符($a-v$共$22$种)。 一条简单路径被称为$Dokhtar-kosh$当且仅当路径上的字符经过重新排序后可以变成一个回文串。 求每个子树中最长的$Dokhtar-kosh$路径的长度。 输入输出样例 输入 #1 4 1 s 2 a 3 s 输出 阅读全文
posted @ 2020-10-08 16:59 liuchanglc 阅读(169) 评论(0) 推荐(0)
摘要:题目描述 分析 方法一(线段树) 线段树维护的是以当前节点为左端点的区间的贡献 而区间的右端点则会从 $1$ 到 \(n\) 逐渐右移 当我们把右端点从 \(i-1\) 的位置扩展到 \(i\) 的位置时 如果原先区间的最近公共祖先到根节点的路径中经过 \(a[i-1]\) 和 \(a[i]\) 的 阅读全文
posted @ 2020-10-07 15:12 liuchanglc 阅读(163) 评论(0) 推荐(0)
摘要:题目描述 分析 首先可以证明,肯定存在合法的方案 那么就有一个 $60$ 分的 \(n\times q\) 的做法 对于每一次询问,我们对整棵树进行一次 \(dfs\) 如果当前子树中有奇数个点被选择,那么我们保留一个点,把剩下的点两两配对 如果有偶数个点被选择,那么我们直接把它们都配对即可 对与另 阅读全文
posted @ 2020-10-05 16:42 liuchanglc 阅读(130) 评论(0) 推荐(0)
摘要:题目描述 分析 对于测试点$1$、$2$,直接搜索即可 对于测试点$3 \sim 6$,树退化成一条链,我们可以将其看成序列上的染色问题,用线段树维护颜色相同的最长序列 对于测试点$7$、$8$,肯定是车的速度越大能经过的道路越少,所以我们用类似并查集的方法从大到小依次维护联通块的直径,这里要用到一 阅读全文
posted @ 2020-10-05 16:02 liuchanglc 阅读(171) 评论(0) 推荐(0)
摘要:题目描述 You are given a weighed undirected connected graph, consisting of n vertices and mm edges. You should answer q queries, the i-th query is to find 阅读全文
posted @ 2020-05-09 11:41 liuchanglc 阅读(163) 评论(0) 推荐(0)
摘要:题目描述 City C is really a nightmare of all drivers for its traffic jams. To solve the traffic problem, the mayor plans to build a RTQS (Real Time Query 阅读全文
posted @ 2020-05-06 18:25 liuchanglc 阅读(208) 评论(0) 推荐(2)
摘要://dfs预处理出每个节点的深度和2的x方级祖先节点 void dfs(int now,int fa,int da){ //now为当前节点,fa为父亲节点,da为父亲节点和儿子节点所连边的边权 cost[now][0]=da; zx[now][0]=fa; dep[now]=dep[fa]+1; 阅读全文
posted @ 2020-05-02 09:23 liuchanglc 阅读(129) 评论(0) 推荐(0)
摘要:题目传送门 题目描述 Chris家的电话铃响起了,里面传出了Chris的老师焦急的声音:“喂,是Chris的家长吗?你们的孩子又没来上课,不想参加考试了吗?”一听说要考试,Chris的父母就心急如焚,他们决定在尽量短的时间内找到Chris。他们告诉Chris的老师:“根据以往的经验,Chris现在必 阅读全文
posted @ 2020-04-08 14:53 liuchanglc 阅读(257) 评论(0) 推荐(0)