随笔分类 -  题解

1 2 3 4 5 ··· 10 下一页
该文被密码保护。
posted @ 2025-11-24 21:17 wing_heart 阅读(6) 评论(0) 推荐(0)
摘要:题意:给定一棵$n$个点的树,一条蛇在路径$(h,t)$ 上($h \neq t$),蛇类似火车移动,问蛇能否走到路径$(t,h)$ ,需线性或接近线性做法。思路:合法枢纽(关键点)指存在三条长度大于等于蛇长岔路的点。先证明若直径上无关键点则整棵树无关键点,若蛇能到达一个关键点就能到达任意关键点。先求树的直径,找到直径上关键点$u$ ,若蛇一端能在$u$ 上则有解。以$u$ 为根,若$h,t$ 是祖孙关系蛇可到根;否则求$h,t$ 的LCA ,在变成祖孙关系前LCA不变,蛇来回走向最远叶子,若走到同一位置则无解,直接模拟,总时间复杂度线性 。 阅读全文
posted @ 2025-11-14 22:04 wing_heart 阅读(26) 评论(0) 推荐(0)
摘要:思路:考虑DP,对于每一位存在关键操作,操作后该位不再变化,之前该位状态无关紧要。设$f_S$表示集合$S$的位未固定,不在$S$的位已固定且与$y$相同的最小花费。预处理$g_S$,即集合$S$上与$y$相同的AND操作的最小费用,通过高位前缀和求解(因取$\min$无需容斥),OR操作同理。转移时枚举$S$补集的子集$T$,对AND操作,要求$y$在$T$位置均为$0$,可选AND操作在$T$位置为$0$且在$S$中为$1$的位置为$1$;OR操作类似。时间复杂度$O(2^k k + 3^k)$ 。 阅读全文
posted @ 2025-11-13 22:10 wing_heart 阅读(17) 评论(0) 推荐(2)
摘要:题意:A和B玩游戏,给定长度为$n$($n \leq 10^5$)的序列,A先手。每轮先手选一切割点将序列分成两份,后手选留其中一份,然后交换先后手,游戏至剩一个数字结束,A希望数字尽可能大,B希望尽可能小,求最终剩下的数字。思路:除A先手外条件公平,猜测留下数字为中位数(偶数长序列认为有两个中位数)。通过给比中位数大的数字赋权值`+1`,其他`-1`,证明无论谁先手都取不到比中位数大的数字。对于偶数长且两中位数不等的情况,给$\geq$较大中位数的数字赋权值`1`,其他`-1`,分析原序列能分成极小权值和为`0`的序列个数$cnt$,$cnt$为奇数时先手输,偶数时先手赢,用`nth_element()`函数平均$O(n)$求解 。 阅读全文
posted @ 2025-11-13 10:39 wing_heart 阅读(10) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2025-11-10 16:47 wing_heart 阅读(5) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2025-10-30 09:13 wing_heart 阅读(11) 评论(0) 推荐(1)
摘要:题意:给定包含 `a,b,c` 的字符串,长度 $n \leq 2 \times 10^5$,求所有区间权值和,区间权值为出现次数最多字母的个数减去出现次数最少字母的个数(出现次数不为0)。思路:先统一式子,包含3种字母区间 $val_{l,r} = \frac{|c_a - c_b| + |c_b - c_c| + |c_c - c_a|}2$ ,包含2种字母区间 $val_{l,r} = |c_a - c_b|$ ,1种字母区间无贡献。为简化维护,贡献乘2去分母,枚举两个字母 $A,B$ ,对于含 $A,B$ 区间算 $2|c_A - c_B|$ ,含三种字母区间减多余贡献算 $-|c_A - c_B|$ 。枚举区间右端点 $r$ ,用 $cnt_x$ 存差值为 $x$ 的区间个数及偏移量 $tag$ 从 $r - 1$ 转移,时间复杂度为线性 。 阅读全文
posted @ 2025-10-23 09:57 wing_heart 阅读(48) 评论(0) 推荐(1)
该文被密码保护。
posted @ 2025-10-22 20:06 wing_heart 阅读(12) 评论(0) 推荐(1)
该文被密码保护。
posted @ 2025-10-21 18:53 wing_heart 阅读(12) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2025-10-19 19:59 wing_heart 阅读(9) 评论(0) 推荐(0)
摘要:目前只有题一。 阅读全文
posted @ 2025-10-16 20:01 wing_heart 阅读(14) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2025-10-15 21:45 wing_heart 阅读(7) 评论(0) 推荐(1)
该文被密码保护。
posted @ 2025-10-15 19:39 wing_heart 阅读(10) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2025-10-14 19:51 wing_heart 阅读(12) 评论(0) 推荐(1)
该文被密码保护。
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 阅读(16) 评论(0) 推荐(1)
摘要:题意:给定初始无边的\(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 阅读(24) 评论(0) 推荐(1)
该文被密码保护。
posted @ 2025-10-08 19:47 wing_heart 阅读(14) 评论(0) 推荐(0)
该文被密码保护。
posted @ 2025-10-05 21:38 wing_heart 阅读(5) 评论(0) 推荐(1)

1 2 3 4 5 ··· 10 下一页