Loading

摘要: A - 2^n - 2*n 直接计算即可。 #include<bits/stdc++.h> using namespace std; int n; int main(){ ios::sync_with_stdio(false); cin.tie(0),cout.tie(0); cin>>n; cou 阅读全文
posted @ 2026-01-03 22:45 Seqfrel 阅读(156) 评论(0) 推荐(0)
摘要: 思路 首先第一问是裸的树的直径,因为没有负权边而且第二问会用到直径的两个端点,所以使用两次 DFS 求解。 接着考虑第二问。借用洛谷题解区的一张图: 当我们已经算出来一条直径后,就要刨掉那些分叉的边。当一个当前直径上的点到其子树内最深的距离(不包含已经是当前直径上的点)等于这个点到其子树内那个已知的 阅读全文
posted @ 2025-12-31 22:44 Seqfrel 阅读(53) 评论(0) 推荐(0)
摘要: A - Feet 直接代入计算。 #include<bits/stdc++.h> using namespace std; int a,b; int main(){ ios::sync_with_stdio(false); cin.tie(0),cout.tie(0); cin>>a>>b; cou 阅读全文
posted @ 2025-12-28 22:40 Seqfrel 阅读(63) 评论(0) 推荐(0)
摘要: 校内 test1226 T1~T4 题解。密码提示:教练用户名+机房号。 阅读全文
posted @ 2025-12-26 22:02 Seqfrel 阅读(1) 评论(0) 推荐(0)
摘要: 思路 因为所有核心城市两两可互相到达,不妨将所有核心城市缩成一个点,然后考虑这个点会在图上的什么地方出现。题目要求使其他点到这个点距离的最大值最小,不难想到树的直径,该点是直径中点。 然后再把核心城市放回去,考虑怎么选择这 \(k\) 个点。依然按照上述思路,找最小。首先仍是直径中点,然后贪心地选剩 阅读全文
posted @ 2025-12-25 17:42 Seqfrel 阅读(45) 评论(0) 推荐(0)
摘要: 树上差分 类比一维差分,用于处理树上一段路径的区间修改操作。 点差分 Luogu P3128 [USACO15DEC] Max Flow P 一点的点权可采用前缀和思想,由其子树求得。因此考虑在树上差分,定义差分数组 \(f\),则 \(w_u=f_u+\sum w_v\)。因此将树上一条深度单调的 阅读全文
posted @ 2025-12-23 17:21 Seqfrel 阅读(52) 评论(0) 推荐(0)
摘要: 又是没想出来的 trick。 思路 考虑两条路径相交时的情况。 这种情况一定是不存在的,因为中间的交叉点往上出现了两条分支,而树上每个节点只有一个父节点。所以交叉点一定是其中一条路径深度最小的点,即某一组的最近公共祖先。 那么两条路径相交,当且仅当其中一条路径对应两点的 LCA 在另一条路径上。 接 阅读全文
posted @ 2025-12-19 20:05 Seqfrel 阅读(30) 评论(0) 推荐(1)
摘要: 思路 首先不难发现是树上最短路,使用最近公共祖先求解。令 \(u,v\) 的 LCA 为 \(k\),两点距离为两点到 LCA 深度差的和,即 \(dep_u-dep_k+dep_v-dep_k\)。也可以在求 LCA 向上跳的同时累加步数。 然后考虑传送门,只要从 \(u,v\) 出发走到各自距离 阅读全文
posted @ 2025-12-18 17:28 Seqfrel 阅读(29) 评论(0) 推荐(0)
摘要: 两道基本一样的题。 思路 考虑维护双指针 \(l\)、\(r\),表示当前区间的两端点。 向后拓展 \(r\) 直到 \(m\) 个元素都包含在区间内。 接着考虑继续向后拓展 \(r\) 时如何保证在当前 \(r\) 固定的情况下区间合法且最小。 在整个拓展过程中,遇到重复元素,意味着此前出现过该元 阅读全文
posted @ 2025-12-14 19:52 Seqfrel 阅读(39) 评论(0) 推荐(0)
摘要: 思路 每次操作都去 DFS 树,时间复杂度 \(O(nm)\)。期望得分 \(30\) pts。 但我们发现增兵是可以叠加的,那我们记录每个点 1、2 操作总共增了多少兵,最后离线 DFS 一遍即可,时间复杂度 \(O(n)\)。期望得分 \(100\) pts。 考虑强制在线怎么做:注意到 \(u 阅读全文
posted @ 2025-12-14 18:03 Seqfrel 阅读(28) 评论(0) 推荐(0)