Loading

摘要: A - Append s 模拟即可。 #include<bits/stdc++.h> using namespace std; string s; int main(){ ios::sync_with_stdio(false); cin.tie(0),cout.tie(0); cin>>s; cou 阅读全文
posted @ 2026-02-01 19:32 Seqfrel 阅读(5) 评论(1) 推荐(0)
摘要: 一个 \(O(n\log n)\) 预处理,\(O(1)\) 求 LCA 的科技。 欧拉序 图来自 Luogu @Rainbow_qwq。 欧拉序即为 DFS 序中添加回溯经过的节点。 此树的欧拉序为 \(1→2→4→7→4→8→4→2→5→2→1→3→6→3→1\)。 欧拉序求 LCA 欧拉序的性 阅读全文
posted @ 2026-01-09 20:57 Seqfrel 阅读(37) 评论(0) 推荐(0)
摘要: 以上是图论经典问题:科尼斯堡七桥问题,由欧拉于 1736 年提出,旨在探讨图上的一笔画问题。 欧拉路径、欧拉回路 欧拉路径:图中经过所有边恰好一次的路径(即一笔画)。若该路径的起点与终点相同,则称其为一条欧拉回路。 判断 判断一个连通图是否存在欧拉路径: 有向图欧拉路径:图中恰存在 \(1\) 点, 阅读全文
posted @ 2026-01-07 23:19 Seqfrel 阅读(89) 评论(0) 推荐(0)
摘要: 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 阅读(122) 评论(0) 推荐(0)
摘要: 思路 首先第一问是裸的树的直径,因为没有负权边而且第二问会用到直径的两个端点,所以使用两次 DFS 求解。 接着考虑第二问。借用洛谷题解区的一张图: 当我们已经算出来一条直径后,就要刨掉那些分叉的边。当一个当前直径上的点到其子树内最深的距离(不包含已经是当前直径上的点)等于这个点到其子树内那个已知的 阅读全文
posted @ 2025-12-31 22:44 Seqfrel 阅读(10) 评论(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 阅读(35) 评论(0) 推荐(0)
摘要: 校内 test1226 T1~T4 题解。密码提示:教练用户名+机房号。 阅读全文
posted @ 2025-12-26 22:02 Seqfrel 阅读(1) 评论(0) 推荐(0)
摘要: 思路 因为所有核心城市两两可互相到达,不妨将所有核心城市缩成一个点,然后考虑这个点会在图上的什么地方出现。题目要求使其他点到这个点距离的最大值最小,不难想到树的直径,该点是直径中点。 然后再把核心城市放回去,考虑怎么选择这 \(k\) 个点。依然按照上述思路,找最小。首先仍是直径中点,然后贪心地选剩 阅读全文
posted @ 2025-12-25 17:42 Seqfrel 阅读(22) 评论(0) 推荐(0)
摘要: 树上差分 类比一维差分,用于处理树上一段路径的区间修改操作。 点差分 Luogu P3128 [USACO15DEC] Max Flow P 一点的点权可采用前缀和思想,由其子树求得。因此考虑在树上差分,定义差分数组 \(f\),则 \(w_u=f_u+\sum w_v\)。因此将树上一条深度单调的 阅读全文
posted @ 2025-12-23 17:21 Seqfrel 阅读(31) 评论(0) 推荐(0)
摘要: 又是没想出来的 trick。 思路 考虑两条路径相交时的情况。 这种情况一定是不存在的,因为中间的交叉点往上出现了两条分支,而树上每个节点只有一个父节点。所以交叉点一定是其中一条路径深度最小的点,即某一组的最近公共祖先。 那么两条路径相交,当且仅当其中一条路径对应两点的 LCA 在另一条路径上。 接 阅读全文
posted @ 2025-12-19 20:05 Seqfrel 阅读(6) 评论(0) 推荐(1)