上一页 1 2 3 4 5 6 7 ··· 18 下一页
摘要: 题意:略。思路:利用$f_i^2 g_i = i$,考虑拆贡献算,枚举$\le \sqrt N$的质因子算$f$。对于质因子$p$,求包含$p^{2k}$的数的个数,通过求至少$2k$次的数的个数 $\lfloor \frac{N}{p^{2k}} \rfloor$ 来计算,$p$ 的总贡献为 $\prod_{p \le \sqrt N} p^{\sum_k \lfloor \frac{N}{p^{2k}} \rfloor}$,枚举$p,k$计算 $p_{2k}$ 和逆元。由于直接求$N!$时间复杂度为 $O(N)$,所以采用分段打表来解决。 阅读全文
posted @ 2025-10-12 20:42 wing_heart 阅读(6) 评论(0) 推荐(1)
摘要: 题意:给定一棵\(n\)个点的树和\(m\)个链\((u, v)\) ,需选出\(k\)个链,使得存在一个点\(x\)在这\(k\)个链中都出现,一个方案的代价是选中最长链长度减去最短链长度,求最小代价,其中\(n \le 5 \times 10^4\),\(k \le m \le 10^4\)。思路:先对树进行DFS预处理深度和父节点。将链按长度排序,用bitset存每个链包含的点,维护每个点在当前双指针区间\([l, r]\)内出现次数。遍历排序后的链,双指针移动,左指针\(l\)固定时找最小的\(r\)使\([l, r]\)内存在一个点出现\(k\)次(即存在合法方案),此时代价为\(len_r - len_l\) ,不断更新最小代价,时间复杂度\(O(nm)\) ,bitset主要用于优化空间 。 阅读全文
posted @ 2025-10-10 16:13 wing_heart 阅读(21) 评论(0) 推荐(1)
摘要: 可撤销并查集。 阅读全文
posted @ 2025-10-10 09:55 wing_heart 阅读(21) 评论(0) 推荐(0)
摘要: 题意:给定初始无边的\(n\)个点无向图及\(q\)个操作,包括连边(边权\(w\),\(0 \leq w \leq 10\))、删边和查询两点间权值最大值最小的路径权值,\(n,q \leq 10^5\)且保证无重边。思路: - **线段树分治 + 可撤销并查集**:因\(w\)小,建\(11\)个图,分别包含\(w \leq k(k \in [0,10])\)的边。对操作按时间排序后在时间轴上分治,用可撤销并查集维护区间有效边。每条边有效区间在线段树上用\(\log\)个节点表示,分治到节点时加入或撤销边。非叶子区间先加边,递归处理左右子区间,再撤销边;叶子区间若为查询则判断两点是否连通,时间复杂度\(O(Vq\log^2q)\) 。 - **LCT做法**:先离线预处理边的删除时刻,用LCT维护每个图的生成树及删边操作。添加边时,若两点已连通且新边删除时刻晚,贪心地找出两点路径上删除时间最早的边判断是否替换,复杂度\(O(Vq \log q)\) 。 阅读全文
posted @ 2025-10-10 09:43 wing_heart 阅读(14) 评论(0) 推荐(1)
摘要: 思路:若区间包含的\(a_i\)完整,最小众数为\(1\);若\(a_l\)只有后缀\([x,a_l]\)且\(a_r\)只有前缀\([1,y]\),当且仅当\(\forall i \in [l,r], a_i \ge x\)时最小众数是\(x\),否则为\(1\)。为方便求解,先求出所有最小众数为\(x(x>1)\)的子区间并贡献\(x - 1\),再让所有子区间统一贡献\(1\)。利用小根笛卡尔树,对于笛卡尔树上节点\(u\),在其左右子树分别取\(l\)、\(r\)计算贡献。左端点有\(siz_{ls} +1\)种取法,右端点有\((sum_{rs}+a_u) - (x - 1)(siz_{rs}+1)\)种取法,每个方案贡献\(x - 1\) ,经化简可得\(u\)子树总贡献为\((siz_{ls}+1) ((sum_{rs}+a_u)\frac{a_u(a_u - 1)}{2} - (siz_{rs}+1) \frac{(a_u - 1)a_u(2a_u - 1)}{6})\) ,该问题可线性求解,单\(\log\)做法能简化代码 。 阅读全文
posted @ 2025-10-09 20:50 wing_heart 阅读(32) 评论(0) 推荐(1)
摘要: 题意:\(n\)种食物(\(n\leq5000\))可组成\(2^n\)种串串,共\(2^{2^n}\)种选串串集合方案,求每种食物至少出现2次的方案数并对输入大质数取模。思路:利用容斥原理,设\(f_i\)表示至少\(i\)种食物至多出现1次,答案为\(\sum_{i = 0}^n (-1)^i f_i\)。最初得\(O(n^3)\)的\(\sum_{i = 0}^n (-1)^i \binom{n}{i} 2^{2^{n - i}} \sum_{j = 0}^i \binom{i}{j} \sum_{k = 0}^j {j \brace k} 2^{(n - i)k}\),经推导\(\sum_{j = k}^i {j \brace k} \binom{i}{j} = {i + 1 \brace k + 1}\),优化为\(O(n^2)\)的\(\sum_{i = 0}^n (-1)^i \binom{n}{i} 2^{2^{n - i}} \sum_{k = 0}^i 2^{(n - i)k} {i + 1 \brace k + 1}\),通过快速幂与递推第二类斯特林数求解 。 阅读全文
posted @ 2025-10-08 19:47 wing_heart 阅读(15) 评论(0) 推荐(0)
摘要: 题意:给定长为\(n\)序列\(\{a_i\}\)与正整数\(k\),\(n,m \leq 2×10^5\),\(1 \leq a_i \leq 10^6\),有\(m\)次操作,包括修改\(a_x = y\)和查询\([l,r]\)内长度为\(k\)且两两互质的子区间个数。思路: 1. **刻画不互质关系**:将\(a_i\)分解质因数,每个质因数用set维护有相同质因数且小于当前位置的最大位置,以确定\(p_i\)(\(a_i\)最近的使\(gcd(a_i, a_{p_i}) > 1\)且\(p_i < i\)的位置)。修改\(a_x\)时,更新相关set与\(p_{next(x)}\)及\(p_x\),时间复杂度\(O((n + m)\log^2)\)。 2. **区间查询实现**:因\(k\)固定,维护以\(x\)为左端点的\([x, x + k - 1]\)区间合法性。\(p_i > i - k\)时,标记\([i - k + 1, p_i]\)不合法。通过线段树维护区间最小值及最小值个数,将求无标记子区间个数转化为查询线段树,从而解决查询操作。 阅读全文
posted @ 2025-10-05 21:38 wing_heart 阅读(5) 评论(0) 推荐(1)
摘要: - **思路一**:先考虑 $m = 1$ 的情况,通过推导得出维护 $sum_{i \in [0,k]} = \sum_{j \in [l + 1,n]} s_{j}^i$ 的方法,时间复杂度为 $O(Nk^2)$。对于 $m \neq 1$ 的情况,枚举矩形的 $y1,y2,x1$,按照类似思路计算,时间复杂度为 $O(N\sqrt{N}k^2)$。 - **思路二**:同样先看 $m = 1$ 时,对答案表达式进行展开和变形,利用后缀和计算,得出时间复杂度为 $O(Nk)$。当 $m \neq 1$ 时,枚举矩形的 $y1,y2,x1$,对答案表达式展开,同样利用后缀和计算,时间复杂度为 $O(N \sqrt{N} k)$,相比思路一少一个 $k$ 的复杂度 。 阅读全文
posted @ 2025-10-05 17:28 wing_heart 阅读(7) 评论(0) 推荐(0)
摘要: 题意:给定有向图,$n,m,q \leq 5 \times 10^5$,有4种操作:摧毁边$(u,v)$、摧毁点$u$所有入边、修复边$(u,v)$、修复点$u$所有入边,每次操作后判断是否能发起总攻,条件为所有点出发可到环且每个点出度$\leq 1$。思路:能发起总攻时图为内向基环树森林,关键是维护每个点出度是否恰好为1。因操作2、4难以直接维护出度,利用入度和等于出度和等于$n$这一条件,为每个点随机权值$w_u$,用$f_u = \sum_{v \in {in_u}} w_v$表示点$u$所有入边权值和,通过维护$f_u$来判断。若$\sum f_u = \sum w_u$,则大概率每个点出度为1 ,时间复杂度线性。 阅读全文
posted @ 2025-10-02 18:37 wing_heart 阅读(15) 评论(0) 推荐(0)
摘要: 题意:给定有向图,$n,m,q \leq 5 \times 10^5$,有4种操作:摧毁边$(u,v)$、摧毁点$u$所有入边、修复边$(u,v)$、修复点$u$所有入边,每次操作后判断是否能发起总攻,条件为所有点出发可到环且每个点出度$\leq 1$。思路:能发起总攻时图为内向基环树森林,关键是维护每个点出度是否恰好为1。因操作2、4难以直接维护出度,利用入度和等于出度和等于$n$这一条件,为每个点随机权值$w_u$,用$f_u = \sum_{v \in {in_u}} w_v$表示点$u$所有入边权值和,通过维护$f_u$来判断。若$\sum f_u = \sum w_u$,则大概率每个点出度为1 ,时间复杂度线性。 阅读全文
posted @ 2025-09-29 10:58 wing_heart 阅读(69) 评论(0) 推荐(0)
摘要: 题意:飞机有 $n$ 排座位($1 \le m \le n \le 1000000$),$m$ 人登机,前后各有一个入口,每人有分配座位(可能相同),登机时若座位被占则朝进入方向找空位,若走到尽头未找到则愤怒,求无人生气的座位分配及登机方案数对 $10^9 + 7$ 取模结果。思路:将问题转化为概率问题,看成环形座位(环长 $n + 1$,在 $1,n$ 衔接处设座位 $0$),每个人随机分配座位和方向,因每个座位等价,一个座位被占据概率是 $\frac{m}{n + 1}$,则 $0$ 未被占用概率为 $\frac{n + 1 - m}{n + 1}$,而方案总数为 $(2(n + 1))^m$,所以合法方案数为 $(2(n + 1))^m \times \frac{n + 1 - m}{n + 1}$ 。 阅读全文
posted @ 2025-09-28 15:11 wing_heart 阅读(30) 评论(0) 推荐(0)
摘要: 可持久化平衡树。 阅读全文
posted @ 2025-09-28 10:41 wing_heart 阅读(21) 评论(0) 推荐(0)
摘要: 题意:给定 $n$ 个区间 $[L_i, R_i]$,每次询问 $l, r, x$,对于 $i \in [l, r]$,从左至右枚举 $i$,若 $x \in [L_i, R_i]$,则 $x \gets x + 1$。思路:离线时可采用《插入 - 标记 - 回收》算法,用平衡树实现单 $\log$ 复杂度。在线时,通过预处理区间 $[a, b]$,计算 $x \in [0, V]$ 走过该区间后增加值,利用线段树处理询问。线段树节点 $u$ 表示区间 $[a, b]$,由于值域 $V$ 大,将值域分成若干段,每段增加值相同,用 vector 存储这些段信息。建树时,通过归并两个儿子的 vector 合并区间,复杂度 $O(n \log n)$。查询时,对每个线段树节点二分查找 $x$ 在对应 vector 位置并更新 $x$,时间复杂度 $O(m \log^2 n)$,空间复杂度与时间复杂度相同 。 阅读全文
posted @ 2025-09-28 09:43 wing_heart 阅读(17) 评论(0) 推荐(0)
摘要: 题意:给定两棵树 $S$ 和 $T$,$n \leq 5 \times 10^3$,判断 $S$ 能否通过特定操作与 $T$ 同构,若能则构造方案。操作要求选择点 $u$ 和点 $v$ 满足 $2 \mid dis(u, v)$,以 $u, v$ 路径上任意一点为根交换子树 $u, v$,操作次数不能超过 $2n$。思路:先分析操作性质,按深度奇偶对树节点黑白染色,操作只能在同色点对间进行且操作后点度数不变,所以 $S$ 和 $T$ 同色同度数点数量相同是存在方案的必要条件,且该条件也是充要的。构造方案时,先将 $S$ 和 $T$ 中相同颜色相同度数的点配对。以 $1$ 为根对 $S$ 操作,对每个点,按 $T$ 从深度浅到深的顺序,若当前点有失散儿子和假儿子,且假儿子不是失散儿子的祖先,直接交换子树;若假儿子是失散儿子的祖先且失散儿子不是叶子,可通过交换失散儿子的一个儿子和当前点来调整,如同反向 $(v, u)$ 的链;若失散儿子是叶子,可先不管,因为非叶子节点找到正确父亲后叶子自然正确。时间复杂度 $O(n^2)$,操作次数 $< n$ 。 阅读全文
posted @ 2025-09-27 16:03 wing_heart 阅读(24) 评论(4) 推荐(1)
摘要: 题意:给定\(n\)个人(\(n \leq 10^6\))健身需求和\(m\)个器材(\(m \leq 10^9\)),每人在\([l_i, r_i]\)某天使用器材\(p_i\),求使健身房有人天数最少的安排。思路: - **贪心+线段树**:先离散化器材。按\(l\)降序更新\(r_i\),用动态开点线段树找器材最后未占用时刻,判断是否有解。再按\(r\)升序,通过线段树二分找健身房有人且器材\(p\)有空的最早时刻。虽时间\(O(n \log V)\),但空间\(O(n \log V)\)需卡空间。 - **优化贪心**:先更新\(r_i\),从小到大枚举时间\(t\)。每个器材维护set,\(l_i = t\)时将\(i\)加入\(p_i\)的set;\(r_i = t\)时,\(i\)在\(r_i\)健身,从其他非空器材set选\(r\)最小者当天健身。时间\(O(n \log n)\),空间\(O(n)\),更优且无需卡常。 阅读全文
posted @ 2025-09-25 21:36 wing_heart 阅读(42) 评论(0) 推荐(0)
上一页 1 2 3 4 5 6 7 ··· 18 下一页