摘要: Codeforces 对于 Easy 部分的做法: 很容易想到统计下来每个点的位置,枚举到达的点,然后进行转移统计即可。 时间复杂度 \(O(m^2n)\)。 由于个人习惯,代码中的 \(n\) 和 \(m\) 与原题目不同。 代码: #include<bits/stdc++.h> #define 阅读全文
posted @ 2025-12-07 12:55 huhangqi 阅读(11) 评论(0) 推荐(0)
摘要: AtCoder 以出发点为根,我们可以发现门一定在一个节点的祖先上,如果你走到一个点放下门,再继续走子树部分,然后去走其它子树时,一定会经过放门的这个点,那么此时这个门在这已经没有用了,如果你先去走其它子树,可以发现必定不是最优情况,所以门一定是在节点的祖先。 题目需要求出遍历完所有位置得到的答案。 阅读全文
posted @ 2025-12-07 12:54 huhangqi 阅读(3) 评论(0) 推荐(0)
摘要: 洛谷 由于每一个节点最多只会连出一条边,所以一个连通的图必定是基环树或者树。 如果是基环树,那么一定会有环,且经过移动后必定在环内,直接按照有环的情况输出即可。 对于一颗树,我们可以将这一个节点连向的点视为父亲,那么最后的答案就是这棵树的根。 我们可以通过并查集来模拟建树的过程,但是拆树的过程并不好 阅读全文
posted @ 2025-12-07 12:52 huhangqi 阅读(4) 评论(0) 推荐(0)
摘要: 洛谷 首先对于最大值,很容易想到找一条边拆掉,然后把两个直径相连,此时最长直径就是两个树的直径和再加一。 而对于最小值,我们将拆出来的两个树找中点,把中点连起来,此时就是两个的直径折半向上取整的和加一以及两个树的直径的最大值。 现在问题就是如何处理一条边两端的树的直径了。 我们首先可以一次 dp 以 阅读全文
posted @ 2025-12-07 12:50 huhangqi 阅读(9) 评论(0) 推荐(0)
摘要: 洛谷 一个比较简单的思路,不需要二分。 考虑逆向操作,从路径两端开始处理数值范围,将蚂蚁群大小视为一次查询。 由于树的两点之间的简单路径只有一条,所以每个点的范围是唯一的。 处理时和 \(10^9\) 取最小值,因为此时已经超过了蚁群最大数量,再继续可能会把 long long 爆了。 之后我们再把 阅读全文
posted @ 2025-12-07 12:48 huhangqi 阅读(4) 评论(0) 推荐(0)
摘要: https://www.luogu.com.cn/problem/P4037 由题目可知整个合成路径可以看作一个森林。 对于答案的统计,我们在处理完每棵树的消耗费用对应的最大力量以后,使用一个背包即可。 这样我们就可以统计出答案了。 现在问题在于如何处理出每一棵树的消耗费用对应的最大力量。 很明显这 阅读全文
posted @ 2025-12-07 12:47 huhangqi 阅读(7) 评论(0) 推荐(0)
摘要: 洛谷 一眼动态规划。 但是我们状态怎么设置? 我们分析题目,可以发现一个领头一定要开到最后,不再成为领头。 原因很简单,如果你把这只领队重新放回队尾,那么它在其它奶牛领队后跑了几圈,它最后能跑的圈数比其他没有跑过的少得更多,自然是希望在前面跑完以后就不再领跑。 这样我们就简化了题目,目前需要记录已经 阅读全文
posted @ 2025-12-07 12:45 huhangqi 阅读(3) 评论(0) 推荐(0)
摘要: Codeforces 看题目如果直接从如何配对的角度去考虑的话,还是比较困难的。 但是我们不只能从点的角度入手,我们也可以尝试从边的角度入手。 一条边如果要被两个点之间的最短路径经过,那么这两个点一定分别分布在这一条边的两边。 由于我们选择的是最长路径,而任意两个点之间的简单路径只有一条。 那么很容 阅读全文
posted @ 2025-12-07 12:44 huhangqi 阅读(3) 评论(0) 推荐(0)
摘要: 洛谷 发现直接从起点开始不好处理,可以考虑从终点倒过来处理。 假设目前在位置 \((x,y)\) 那么下一次一定是选择值为 \(x\times y\) 的区域。 那么我们开按照当前区域的值存下这个区域的位置,使用广搜处理,记录每一个值是否加入过队列,防止重复。 时间复杂度为 \(O(n^2)\),可 阅读全文
posted @ 2025-12-07 12:42 huhangqi 阅读(4) 评论(0) 推荐(0)
摘要: 洛谷 由样例可以知道,一个圆只贡献一个区域,而一个圆在中间被几个圆完全连接时会被分成两个部分,计算两个贡献。 那么我们很容易想到先按照左端点排序,在左端点相同时,比较半径大小。 然后从后向前连接,如果前面与当前点的左端相等,那么我们就可以通过这个圆尝试把前面的圆分成两部分。 然后记录下状态,如果前面 阅读全文
posted @ 2025-12-07 12:38 huhangqi 阅读(2) 评论(0) 推荐(0)