01 2024 档案

摘要:先直接看模板题:【模板】重链剖分/树链剖分。 这道题的操作还是修改和查询和,看起来是线段树可以维护的操作,区别在于这是树上的操作。 那怎么把树上的和转化为区间和呢?这里就要用到DFS序(图和树的是一样的)。这样每个节点就有了一个在序列中的下标。加的时候只要对相应的节点所组成的若干区间加即可。 但是这 阅读全文
posted @ 2024-01-31 16:10 5t0_0r2 阅读(56) 评论(0) 推荐(0)
摘要:题目传送门 简化题意: 给出一棵 \(N\) 个节点的树和 \(K\) 次修改,每次修改对路径 \([s,t]\) 上的所有点权加 \(1\),求 \(K\) 次修改后权值最大的点。 分析: 树上差分板子。 先回顾一下序列差分: 序列差分经典题就是进行若干次修改,最终求出整个序列。 因为差分是前缀和 阅读全文
posted @ 2024-01-31 16:07 5t0_0r2 阅读(44) 评论(0) 推荐(0)
摘要:题目传送门 经典树上 DP 问题。 对于该题,我们设状态为 \(f(i,0/1)\)。 \(f(i,0)\) 表示以 \(i\) 为根的子树中不选 \(i\) 参加的宴会的最大快乐值,\(f(i,1)\) 表示以 \(i\) 为根的子树中选 \(i\) 参加的宴会的最大快乐值。 显然,当我们不选 \ 阅读全文
posted @ 2024-01-31 14:13 5t0_0r2 阅读(14) 评论(0) 推荐(0)
摘要:题目传送门 本题注意两个点: 如果 \((u,v)\) 会产生联合权值,\((v,u)\) 也会产生相等的联合权值。 只有联合权值之和才 \(\bmod 10007\),最大联合权值不用(大坑点)。 对于求最大联合权值,相对简单。因为能产生联合权值的 \((u,v)\) 距离为 \(2\),所以中间 阅读全文
posted @ 2024-01-31 11:41 5t0_0r2 阅读(22) 评论(0) 推荐(0)
摘要:给一个数 \(n\),求多少个 \(1 \sim n\) 的排列 \(p\) 满足对于任意 \(i\),\(p_i \neq i\)。 \(f(n) = (n - 1) \times(f(n - 1) + f(n - 2))\) 阅读全文
posted @ 2024-01-28 09:55 5t0_0r2 阅读(6) 评论(0) 推荐(0)
摘要:题目链接 洛谷链接 分析: 我们设分成的 \(n\) 个子任务为 \(a_1 \sim a_n\),即最大化 \(\gcd(a_1,a_2,\dots,a_n)\)。 设这个答案为 \(ans\),\(a_1 = A_1 \times ans,a_2 = A_2 \times ans, \dots 阅读全文
posted @ 2024-01-28 09:34 5t0_0r2 阅读(66) 评论(0) 推荐(1)
摘要:【0】逆元的定义: 逆元又称模意义下的倒数。 一个正整数 \(a\) 在模 \(p\) 的逆元 \(x\) 满足 \(ax \equiv 1(\bmod p)\),我们一般取最小的满足条件的正整数 \(x\) 作为 \(a\) 的逆元,记作 \(a^{-1}\) 或 \(\operatorname{ 阅读全文
posted @ 2024-01-27 17:20 5t0_0r2 阅读(93) 评论(0) 推荐(0)
摘要:建议结合板题食用 【1】暴力做法 我们先用 DFS 预处理所有节点的深度,每次查询,将深度大的节点向上提到和另一节点深度相同的位置,然后同时向上提,直到两节点碰面。 在极端情况下,树只有两条链构成,那么查询链末端的节点的最近公共祖先复杂度可达到 \(O(n)\),不可通过本题,所以我们需要更高效的解 阅读全文
posted @ 2024-01-27 11:12 5t0_0r2 阅读(22) 评论(0) 推荐(0)
摘要:取出整数 \(n\) 在二进制下的最后一位: 直接说结论:n & 1。这一点可以用来判奇偶性,也是其它二进制操作中很重要的一点。 取出整数 \(n\) 在二进制下的第 \(k\) 位: 注:二进制位从 \(0\) 开始计。 因为我们要取第 \(k\) 位,所以 \(0 \sim k - 1\) 位不 阅读全文
posted @ 2024-01-27 10:38 5t0_0r2 阅读(22) 评论(0) 推荐(0)
摘要:建议结合板题食用。 单调队列,顾名思义,就是队内元素满足单调性的队列,可以用于在线性的时间复杂度内求一个序列所有长度为 \(k\) 的区间的最值。 先看一下这个序列: 1 14 5 14 19 1 98 10 设这里的 \(k = 3\),我们先维护一个队列: 首先,我们将 \(1\) 和 \(14 阅读全文
posted @ 2024-01-26 19:16 5t0_0r2 阅读(59) 评论(0) 推荐(0)
摘要:给定一个具有 \(N(N \leq 50)\) 个顶点(从 \(1\) 到 \(N\) 编号)的凸多边形,每个顶点的权均是一个正整教, 问:如何把这个凸多边形划分成 \(N - 2\) 个互不相交的三角形,使得这些三角形顶点的权的乘积之和最小? 设 \(f(i,j)\) 表示 \(i \sim j\ 阅读全文
posted @ 2024-01-26 11:32 5t0_0r2 阅读(32) 评论(0) 推荐(0)
摘要:众所周知,manacher 又叫“马拉车”算法,是一种线性求解最长回文子串的算法。 推荐结合模板阅读此文。 求最长回文子串,首先想到的是暴力。枚举子串的左右端点 \(l,r\) ,再判断这个子串是否回文。总复杂度 \(O(n^3)\),效率过低。 观察发现,我们可以只枚举中点,然后同时向左右不断扩展 阅读全文
posted @ 2024-01-26 11:16 5t0_0r2 阅读(7) 评论(0) 推荐(0)