摘要: CF633G 简单题。 先看到子树加和子树质数个数和,果断转换为 dfs 序进行处理。 既然有区间求和,考虑线段树。 若对于每一个节点维护一个 \(cnt\) 数组,用二进制数 \(x\) 来表示,即当 \(cnt_i = 1\) 时第 \(i\) 位为 \(1\)。设当前节点为 \(u\),左右子 阅读全文
posted @ 2023-10-05 22:41 Pengzt 阅读(3) 评论(0) 推荐(0) 编辑
摘要: ABC298Ex 简单题。 因为有 \(\min\) 不好做,容易想到讨论 \(d(i, L)\) 和 \(d(i, R)\) 的大小。 令 \(p = \text{LCA}(L, R)\),\(dep_L > dep_R, dist = dep_L + dep_R - 2\times dep_p\ 阅读全文
posted @ 2023-10-05 22:39 Pengzt 阅读(12) 评论(0) 推荐(0) 编辑
摘要: CF1805E 待补:有另解 看到维护树上问题,可以想到线段树合并。 但直接维护显然不行,要一点技巧。 发现 \(val\) 的出现次数 \(cnt_{val}\) 如果 \(\ge 3\),那么一定是一个候选项,若 \(cnt_{val} = 1\),那么一定不能作为候选项。 于是可以用权值线段树 阅读全文
posted @ 2023-10-05 22:34 Pengzt 阅读(8) 评论(0) 推荐(0) 编辑
摘要: ABC273F 一道比较板的区间 \(\text{dp}\)。 先对坐标离散化,令离散化数组为 \(v\)。 令 \(f_{i,j}\) 表示能走到区间 \([v_i,v_j]\) 的最短路程,显然 \(f\) 数组初始为 \(inf\)。 但发现这样无法转移,可以再增加一维 \(k \in \{0 阅读全文
posted @ 2023-10-05 22:32 Pengzt 阅读(5) 评论(0) 推荐(0) 编辑
摘要: P3422 一道有点意思的题。 看到是一个环,先破环为链,即 \(a_{n+i}=a_i, b_{n+i}=b_i\),此时就只需要跳到 \(x+n\) 而无需判环了。 如果顺时针走: 令 \(sum_i = \sum\limits_{j=1}^{i}{a_j-b_j}\),当能从 \(x\) 跳到 阅读全文
posted @ 2023-10-05 22:30 Pengzt 阅读(2) 评论(0) 推荐(0) 编辑
摘要: P7795 典。 显然 \(\mathcal{O}(n ^ 2)\) 的时间复杂度无法通过。 使子段平均值最大,考虑二分。 可以二分平均值 \(mid\),然后判断是否有满足条件的子段. 时间复杂度:\(\mathcal{O}(\dfrac{n\log\max\{a_i\}}{\text{eps}} 阅读全文
posted @ 2023-10-05 22:29 Pengzt 阅读(18) 评论(0) 推荐(0) 编辑
摘要: CF1151E 发现每一个 \(f(l, r)\) 中的连通块总是一条链(一棵树)。 那么此时连通块的数量就等于点的数量减去边的数量。 先考虑点的总数,一个价值为 \(a_i\) 的点一定是在 \(l \leqslant a_i\) 且 \(r\geqslant a_i\) 的 \(f(l, r)\ 阅读全文
posted @ 2023-10-05 22:27 Pengzt 阅读(2) 评论(0) 推荐(0) 编辑
摘要: P4133 双倍经验 发现斐波那契数列增长极快,不到 \(100\) 项就超过了 \(10^{18}\),搜索树也极为稀疏,可以考虑搜索。 爆搜肯定会超时,考虑优化: 可行性剪枝。 记忆化,去除重复的计算。 改变搜索的顺序,因为先考虑小元素的话,会有较多的无用的搜索,且小元素较灵活,更容易凑到 \( 阅读全文
posted @ 2023-10-05 20:41 Pengzt 阅读(18) 评论(0) 推荐(0) 编辑
摘要: P8565 发现数列 \(a\) 增长的特别快,项数最多时是 \(a_1 = a_2 = \cdots = a_{100}\),但这样也只会有一百多项就可以超过 \(10^{18}\)。 可以考虑搜索,因为搜索树会比较稀疏,函数 dfs(val, cur) 表示凑出 \(x\) 还需要 \(val\ 阅读全文
posted @ 2023-10-05 20:40 Pengzt 阅读(18) 评论(0) 推荐(0) 编辑
摘要: ARC058D 简单组合计数。 可以先把矩形旋转一下,变为求从 \((1,1)\) 走到 \((n,m)\),只能向上或向右移动。且不经过左上角的 \(A\times B\) 的禁区的方案数,对 \(10^9 + 7\) 取模。 假如没有 \(A\times B\) 的禁区的话,那么方案数为 \(C 阅读全文
posted @ 2023-10-05 20:40 Pengzt 阅读(8) 评论(0) 推荐(0) 编辑
摘要: ABC284F 这题的正解是 \(Z\) 函数。 如果 \(str = T + T\) 的话,若可以找到连续的分别长为 \(n\) 的两段,且这两段可通过 \(1\) 次翻转变为相同的字符串,那么便一定有解,否则无解。 暴力判断是 \(\mathcal{O}(n)\) 的,时间复杂度直接上天。 可以 阅读全文
posted @ 2023-10-05 20:38 Pengzt 阅读(44) 评论(0) 推荐(0) 编辑
摘要: ABC239H 简单题。 令 \(f_i\) 表示乘到 \(\ge i\) 的期望。 容易得到 \(f_i=\dfrac{\sum\limits_{j=1}^{n}f_{\lceil\frac{i}{j}\rceil}}{n}\)。 将 \(f_i\) 移到同一边,去掉系数,有 \(f_i=\dfr 阅读全文
posted @ 2023-10-05 20:36 Pengzt 阅读(18) 评论(0) 推荐(0) 编辑
摘要: ARC163D 发现这个竞赛图一定能被分为两个集合 \(A\),\(B\)。满足 \(\forall u\in A,v\in B\),均有 \(u\to v\in E\)。答案就是划分这两个集合的方案数。 证明: 首先,竞赛图缩完点后一定是一条链,对强连通分量进行标号,满足编号小的强连通分量指向编号 阅读全文
posted @ 2023-10-05 20:35 Pengzt 阅读(7) 评论(0) 推荐(0) 编辑