随笔分类 -  题解

1 2 3 4 5 ··· 23 下一页
摘要:求出 fuf_ufu​ 表示 111 到 uuu 的最少翻转次数,这一部分容易使用最短路处理。具体来说可以把每个状态拆成 gu,0/1g_{u,0/1}gu,0/1​ 表示 111 到 uuu,目前翻转次数为偶数或者奇数的最少翻转次数,跑最短路即可。 然后考虑每个点 uuu 在最终最短路下的翻转次数 阅读全文
posted @ 2024-04-04 22:53 HappyBobb 阅读(14) 评论(0) 推荐(0) 编辑
摘要:考虑一个三次方做法: 枚举两条横线,求出有多少条竖线和两条横线都相交,假设为 ccc 个,那么对答案有 (c2)\dbinom{c}{2}(2c​) 的贡献。复杂度 O(n3)O(n^3)O(n3)。 考虑求出每条横线与每条竖线是否相交,这部分可以 O(n2)O(n^2)O(n2) 求出,那么就可以 阅读全文
posted @ 2024-04-02 20:50 HappyBobb 阅读(1) 评论(0) 推荐(0) 编辑
摘要:设 dud_udu​ 为 uuu 的度数,显然删掉 uuu 后树变成了 dud_udu​ 个连通块,至少需要 du−1d_u-1du​−1 次合并才能变成一个连通块,所以答案下界显然是 du−1d_u-1du​−1。 但是下界不一定取得到。注意到这个东西其实是求最小生成树,不妨考虑 Kruskal 阅读全文
posted @ 2024-03-31 19:48 HappyBobb 阅读(3) 评论(0) 推荐(0) 编辑
摘要:考虑不妨设每个 (x,y)(x,y)(x,y) 都有 x≤yx \leq yx≤y,容易发现规定顺序没有影响。 考虑 (x1,y1)(x_1,y_1)(x1​,y1​) 和 (x2,y2)(x_2,y_2)(x2​,y2​),什么时候可以比较。当且仅当 x1≤x2∧y1≤y2x_1 \leq x_2 阅读全文
posted @ 2024-03-30 10:43 HappyBobb 阅读(4) 评论(0) 推荐(0) 编辑
摘要:Tag:二分图匹配,AC 自动机,Dilworth,Konig。 题意:给定 nnn 个互不相同字符串 sis_isi​。求最多能保留多少个字符串,使得两两之间互不包含。 范围:n≤750n \leq 750n≤750,∑∣si∣≤107\sum \left| s_i \right| \leq 10 阅读全文
posted @ 2024-03-29 22:03 HappyBobb 阅读(8) 评论(0) 推荐(0) 编辑
摘要:离线倒着做,变成连边,以及询问所有连通块直径最大值。 然后是一个经典结论,就是当边权非负时,两个连通块合并,新的直径端点必然是之前两个连通块的四个端点的其中两个,于是你可以使用并查集维护连通块,以及每个连通块的直径端点。合并的时候大力分讨几种即可。 证明: 考虑新的直径,要么在原来的两个连通块内部, 阅读全文
posted @ 2024-03-14 19:28 HappyBobb 阅读(6) 评论(0) 推荐(0) 编辑
摘要:题意:给定 nnn 个字符串 sis_isi​,每个字符串有权值 viv_ivi​。qqq 次询问,每次给定一个字符串 SSS 和一个数 kkk。定义 cnticnt_icnti​ 为 sis_isi​ 在 SSS 中出现次数。求 cnti×vicnt_i \times v_icnti​×vi​ 的 阅读全文
posted @ 2024-03-08 12:05 HappyBobb 阅读(15) 评论(0) 推荐(0) 编辑
摘要:唐题。 考虑瞎状压,fi,Sf_{i,S}fi,S​ 表示末尾的字符串是 sis_isi​,目前 SSS 这个二进制状态为 111 的位置已经是子串了。转移直接枚举上一个位置哈希。注意要把本身就在另一个字符串的子串中的删掉并去重。 #include <bits/stdc++.h> using nam 阅读全文
posted @ 2024-03-05 18:15 HappyBobb 阅读(4) 评论(0) 推荐(0) 编辑
摘要:考虑反向建图,然后设 fuf_ufu​ 表示 uuu 点的答案,fn=+∞f_n = + \inftyfn​=+∞。然后 Dijkstra 维护,每次拓展到一个新的点,相当于考虑一些同余相关的问题。容易发现这个东西可以 O(1)O(1)O(1) 求出,就做完了。 #include <bits/std 阅读全文
posted @ 2024-02-26 18:28 HappyBobb 阅读(4) 评论(0) 推荐(0) 编辑
摘要:注意到对方的操作与我们选择的无关。故可以直接 DP 求出对方最终点数为 iii 的概率。这部分可以前缀和优化。 现在考虑我们怎么做能最优化概率。逆着 DP,fif_ifi​ 表示假如初始点数为 iii 的最优概率。f0f_0f0​ 即为所求。你发现转移分两部分,一部分是,我在 iii 不动,另一部分 阅读全文
posted @ 2024-02-26 18:26 HappyBobb 阅读(12) 评论(0) 推荐(0) 编辑
摘要:题意:P2934 [USACO09JAN] Safe Travel G。 简要题意:nnn 个点 mmm 条边的简单无向连通图,对于 i∈[2,n]i \in [2,n]i∈[2,n],求出如果删掉 111 到 iii 最短路的最后一条边,新的最短路长度。保证 111 到任意一个点最短路唯一。 解法 阅读全文
posted @ 2024-02-25 19:43 HappyBobb 阅读(5) 评论(0) 推荐(0) 编辑
摘要:我会无脑做法,哈哈! 考虑没有删除操作怎么做?直接每个点维护一个标记,下传直接取 max⁡\maxmax 就好。 要删除,直接考虑线段树分治,删除变撤销。然而取 max⁡\maxmax 貌似不好直接撤销。考虑标记永久化,这样就不需要下传。单次区间修改影响 O(log⁡n)O(\log n)O(log 阅读全文
posted @ 2024-02-25 09:00 HappyBobb 阅读(4) 评论(0) 推荐(0) 编辑
摘要:题意:P8264 [Ynoi Easy Round 2020] TEST_100。 简要题意:nnn 个数的序列 a1,a2,⋯ ,ana_1,a_2,\cdots,a_na1​,a2​,⋯,an​,qqq 次询问,每次给定 l,r,vl,r,vl,r,v,求依次访问 l∼rl \sim rl∼r 阅读全文
posted @ 2024-02-18 16:53 HappyBobb 阅读(13) 评论(0) 推荐(0) 编辑
摘要:提供一个无脑做法。 考虑操作的本质是让区间最大值替代整个区间,于是我们要维护序列删掉一个区间,还要维护单点插入。这玩意可以用平衡树做,但是难以拓展到每个点求答案上。 不妨这样:对于每次操作 [l,r][l,r][l,r],我们都找到 [l,r][l,r][l,r] 对应的原序列的区间 [l′,r′] 阅读全文
posted @ 2024-02-14 14:00 HappyBobb 阅读(11) 评论(0) 推荐(0) 编辑
摘要:注意到树高度不超过 404040,我们考虑有没有什么可以突破的地方。 我们要求的答案也是与路径中的边数有关,不妨考虑 DP,fi,j,kf_{i,j,k}fi,j,k​ 表示从根到 iii 经过了 jjj 条未翻修的公路和 kkk 条未翻修的铁路,考虑以 iii 为根的子树的最小答案。转移考虑选的是 阅读全文
posted @ 2024-02-12 19:38 HappyBobb 阅读(12) 评论(0) 推荐(0) 编辑
摘要:操作与一个点相邻的所有点,考虑以 111 为根 DFS,然后将每个这样的点分为其父亲和儿子考虑。注意到父亲只有一个,考虑只维护儿子的答案,父亲特判处理一下即可。 考虑我们要做什么操作?单点修改,全局 +1+1+1,求全局异或值。考虑 01-Trie 维护。单点修改就是删一个数加一个数,容易维护,全局 阅读全文
posted @ 2024-02-10 19:29 HappyBobb 阅读(10) 评论(0) 推荐(0) 编辑
摘要:考虑原图如果存在一条从 aaa 到 bbb 的路径,那么新图中 aaa 会向路径上每一个点连边,证明显然。 进一步的,一个强连通分量内部在新图上必然是完全图。 考虑缩点,然后直接朴素 DP 即可,每个 SCC 内每个点都可以走,SCC 之间只能按照 DAG 的走法走。fuf_ufu​ 和 gug_u 阅读全文
posted @ 2024-02-09 18:50 HappyBobb 阅读(6) 评论(0) 推荐(0) 编辑
摘要:不会一点字符串算法,考虑哈希。 注意到一个特殊限制是 ∣s∣≤100\left| s\right| \leq 100∣s∣≤100,于是我们可以简单处理出每个点向上不超过 100100100 步的哈希值。 考虑询问答案时怎么处理。我们考虑 sss 在这个串,只有三种。令 L=LCA⁡(u,v)L=\ 阅读全文
posted @ 2024-02-09 10:32 HappyBobb 阅读(6) 评论(0) 推荐(0) 编辑
摘要:考虑 lll 固定时怎么做,每条边的边权是 000 或者 111,求路径上每个极长连续 111 的段长作为下标的 fff 的和。 树剖维护,问题转化成序列问题,只需要维护线段树,每个区间维护对应答案以及左侧连续 111 长度和右侧连续 111 长度,合并时容易更新答案。 现在 lll 不固定,考虑离 阅读全文
posted @ 2024-02-08 12:51 HappyBobb 阅读(2) 评论(0) 推荐(0) 编辑
摘要:马上省选了不会欧拉序,来补补。 首先看到动态维护直径比较容易想到的肯定还是 LCT。常见套路是两个连通块合并后的两直径端点必然是原来两个连通块 444 个直径端点中的其二。证明显然。新直径要么是原来两个连通块直径,要么经过这条新的边。又一个点到树上最远距离的点一定是直径端点之一,结论必然成立。 于是 阅读全文
posted @ 2024-02-07 17:30 HappyBobb 阅读(37) 评论(0) 推荐(0) 编辑

1 2 3 4 5 ··· 23 下一页
点击右上角即可分享
微信分享提示