Loading

摘要: 题意 将每个字符串哈夫曼编码,输出 ASCII 需要位数、哈夫曼编码所需位数、压缩率。 思路 建哈夫曼树,将每个字符编码,然后再对应回去。 代码 注意处理只有一种字母的情况。 交 POJ 要改一堆乱七八糟的东西。 这个代码可以在 HDU 通过。 代码1:将哈夫曼树建出来 #include <bits 阅读全文
posted @ 2024-08-09 23:56 SunnyYuan 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 题意 给定图: 每次在叶子结点加入两个点,并实时输出树的直径长度。 思路 每次增加两个点,直径至多变化一个点,长度最多加 1,所以对加入的点处理 lca,并且更新长度和点即可。 代码 #include <bits/stdc++.h> using namespace std; const int N 阅读全文
posted @ 2024-08-09 10:57 SunnyYuan 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 题意 给出 3 个点,选出一个点使得 3 个点到这个点的距离之和最小。 思路 三个点可以先取 2 个点的 lca,然后与第 3 个点再取 lca。 三个点的两两求 lca,至多只会有 2 个不同的结点。 三个点的距离 \(dis[x] + dis[y] + dis[z] - dis[lca(a, b 阅读全文
posted @ 2024-08-09 10:33 SunnyYuan 阅读(17) 评论(0) 推荐(0) 编辑
摘要: 题意 判断树上两条路径是否相交。 思路 可以根据距离进行判断。 如果 \(dis(u, v) = dis(lca(g, t), u) + dis(lca(g, t), v)\),说明 \(g\) 和 \(t\) 的 \(lca\) 在 \(u\) 到 \(v\) 的路径上,两条路径相交。 如果 \( 阅读全文
posted @ 2024-08-09 09:18 SunnyYuan 阅读(3) 评论(0) 推荐(0) 编辑