摘要: 虚树用来处理一些树上的多次询问,对于每个询问,只考虑那些和询问有关的点,将无关的点都缩成边或直接剪掉。对于 \(Q\) 个询问,如果每次询问涉及的点数为 \(k_i\),那么总的时间复杂度就是 \((O\sum k_i)\) 的。 一、建树 在建树过程中,我们维护一个栈 \(stk\),表示当前在树 阅读全文
posted @ 2025-05-25 17:26 zhangxy__hp 阅读(48) 评论(0) 推荐(1)
摘要: 教练并没有更改比赛的名字,导致有两场比赛都叫“2025CSP-S模拟赛7” 阅读全文
posted @ 2025-05-18 14:33 zhangxy__hp 阅读(41) 评论(0) 推荐(0)
摘要: 天照知波 Made by Zxy and Zsk 阅读全文
posted @ 2025-05-05 12:49 zhangxy__hp 阅读(155) 评论(21) 推荐(5)
摘要: wylwyl 阅读全文
posted @ 2025-05-04 20:16 zhangxy__hp 阅读(43) 评论(8) 推荐(0)
摘要: A. Lesson5! 首先预处理出以每个点为起点和终点的最长路 \(g_u\) 和 \(f_u\)。然后按照拓扑序遍历每个点,删掉与这个点相关的边后更新答案,再加上相关的边(要将所有从这个点连出的边都加上,方便后面删边)。需要可删堆。注意 \(n=1\) 的情况,维护的边集中将没有元素,所以要特判 阅读全文
posted @ 2025-05-04 16:05 zhangxy__hp 阅读(54) 评论(0) 推荐(0)
摘要: 一、简介 折半搜索,即对于那些数据范围较小却又不能直接暴搜的题目,采取分两半暴搜后再想办法合并两部分的答案的办法。一般的方式是二分或者状压、map。 二、例题 1.世界冰球锦标赛 对前一半和后一半分别进行暴搜,将前半部分的答案存起来并排序,对于每个后面的答案在这个序列中二分即可。时间复杂度 \(O( 阅读全文
posted @ 2025-05-03 16:13 zhangxy__hp 阅读(26) 评论(0) 推荐(0)
摘要: 一、定义 cdq 分治是一种离线分治算法,一般有三种用途: 处理点对之间的问题 优化 1D/1D 动态规划 将动态问题转为静态问题 对于分治区间 \([l,r]\),确定一个中点 \(mid\),对于左右区间分别递归分治,然后再处理左右区间之间的贡献。啊显然归并排序就是 cdq 分治。 二、例题 1 阅读全文
posted @ 2025-04-19 16:14 zhangxy__hp 阅读(170) 评论(0) 推荐(1)
摘要: A. 十年之约 发现 \(f(n)\) 很小,考虑计算每个值 \(x\) 是多少个数的 \(f\) 值。显然要求 \(f(i)=x\),必定满足 \(\operatorname{lcm}[1,x-1]\mid i\land\operatorname{lcm}[1,x]\nmid i\)。因此贡献就是 阅读全文
posted @ 2025-04-05 11:55 zhangxy__hp 阅读(42) 评论(0) 推荐(0)
摘要: A. 序列问题 首先有一个 DP,设 \(f_i\) 表示前 \(i\) 个位置,当前子序列长度为 \(a_i\),结尾也为 \(a_i\) 的最大价值。那么我们有: \[f_i=\max_{j<i\land a_j<a_i\land i-j\ge a_i-a_j}\{f_j+1\} \]考虑这三个 阅读全文
posted @ 2025-03-29 14:05 zhangxy__hp 阅读(80) 评论(0) 推荐(1)
摘要: A. 光 首先有一个贪心,每次选择需要电量最大的位置加上 \(4\),给相邻的两个位置加上 \(2\),再给对角位置加上 \(1\)。 这样不正确的原因是最后一些位置可能剩不下 \(4\) 个电量了,而我们四个四个放,就会产生浪费。那么我们之间暴力枚举最后每个位置都剩下多少(\(0\) 到 \(3\ 阅读全文
posted @ 2025-03-22 14:07 zhangxy__hp 阅读(59) 评论(3) 推荐(1)