随笔分类 -  题解

上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 23 下一页
摘要:第 300300300 篇题解当然要写个有意思的题。 lxl 给出的标答是根号分治,不过也有序列分块的做法,只不过非常需要卡常。 我们先对序列分块。接着我们考虑怎么处理询问。 显然询问的结果有两种: 在块内的答案。这种可以通过预处理 disi,j,kdis_{i,j,k}disi,j,k​ 表示第 阅读全文
posted @ 2023-03-23 07:36 HappyBobb 阅读(10) 评论(0) 推荐(0)
摘要:什么板子能评 230023002300。 建完 SAM,对于每一个点,其表示字符串个数为 lenu−lenfaulen_u - len_{fa_u}lenu​−lenfau​​,出现次数可以通过 link⁡\operatorname{link}link 边,即后缀链接线性求出,也是套路了。 然后算贡 阅读全文
posted @ 2023-03-08 20:44 HappyBobb 阅读(7) 评论(0) 推荐(0)
摘要:SP1693 COCONUTS - Coconuts 算法:网络流,最小割。 难度:提高+/省选-。 考虑对于所有 111 的从 SSS 连边,所有 000 的往 TTT 连边。朋友之间连一条无向边。删掉朋友之间的一条边相当于看法不一致的一对朋友,删掉每个点和其所连的源点或汇点,相当于与自己想法不一 阅读全文
posted @ 2023-03-07 18:50 HappyBobb 阅读(16) 评论(0) 推荐(0)
摘要:容易发现 LLL 是可以二分的。 接着考虑二分如何 check。 比较容易思考的思路是 DP,设 fif_ifi​ 表示前 iii 个字符的熟悉子串最长的长度之和。设当前二分的是 LLL,那么 fi=max⁡{fi−1,max⁡j∈[i−maxleni,i−L]fj+(i−j)}f_i = \max 阅读全文
posted @ 2023-03-04 14:22 HappyBobb 阅读(7) 评论(0) 推荐(0)
摘要:显然可以直接差分。 但是我看题的时候看成了多次查询。 所以我就写了个线段树。 注意到一个油漆桶被多次覆盖一个颜色是没有贡献的,所以考虑线段树的每个节点维护 c[0/1][0/1][0/1] 分别表示 333 种原色是否出现的方案数。 接着维护一个 tag,可以使用 unordered_set 等结构 阅读全文
posted @ 2023-02-28 21:04 HappyBobb 阅读(68) 评论(0) 推荐(0)
摘要:SAM 经典题。 考虑建出 SAM,第 kkk 小的子串其实就是自动机上从起点开始字典序第 kkk 小的路径上的字符串。 因此可以考虑设 fif_ifi​ 表示从 iii 出发的不同路径个数,那么 fu=1+∑(u,v)∈SAMfvf_u = 1 +\sum \limits_{(u,v) \in \ 阅读全文
posted @ 2023-02-27 19:16 HappyBobb 阅读(7) 评论(0) 推荐(0)
摘要:考虑先建出后缀自动机。 后缀自动机一个常用性质:每个状态表示所有字符串的 Endpos⁡\operatorname{Endpos}Endpos 集合完全相等,也就是出现次数完全相等。另外一个结论,每个状态表示的所有字符串,一定是其字符串中最短和最长字符串之间。即对于构建自动机的 lenilen_il 阅读全文
posted @ 2023-02-22 19:18 HappyBobb 阅读(9) 评论(0) 推荐(0)
摘要:可以发现,如果固定 lll,那么 gcd⁡(al,al+1,⋯ ,ar)\gcd(a_l, a_{l+1}, \cdots, a_r)gcd(al​,al+1​,⋯,ar​) 显然单调递减。 接着可以发现,lll 固定时,随着 rrr 的增大,gcd⁡\gcdgcd 的不同个数并不多。 可以这样理解 阅读全文
posted @ 2023-02-15 18:45 HappyBobb 阅读(10) 评论(0) 推荐(0)
摘要:考虑二分 LCP,显然 LCP 是有单调性的。 然后维护一下哈希,用 multiset 判断存在性,就可以做到两只 log⁡\loglog。 ABC 还卡了 109+710^9+7109+7 的单模哈希,所以赛时用了双模。 #include <iostream> #include <cstring> 阅读全文
posted @ 2023-02-05 22:09 HappyBobb 阅读(10) 评论(0) 推荐(0)
摘要:先考虑什么时候输出 −1-1−1。 我们令 dis1,udis_{1,u}dis1,u​ 表示树 aaa 中从 xxx 点走到 uuu 经过的边数,同理 dis2,udis_{2,u}dis2,u​ 表示树 bbb 中从 yyy 点到 uuu 经过边数。 我们对于一个点 ppp,当且仅当 dis1, 阅读全文
posted @ 2023-02-02 17:49 HappyBobb 阅读(7) 评论(0) 推荐(0)
摘要:如果我们可以知道对任意 i,ji,ji,j,pip_ipi​ 和 pjp_jpj​ 的大小关系,那么我们可以用基于比较的排序算法,在 O(nlog⁡n)O(n \log n)O(nlogn) 的时间复杂度求出 ppp 序列。 考虑怎么求出 pip_ipi​ 和 pjp_jpj​ 大小关系,若 pi< 阅读全文
posted @ 2023-01-24 11:12 HappyBobb 阅读(9) 评论(0) 推荐(0)
摘要:考虑对 aaa 序列从小到大排序。 可以发现,一定存在一种最优方案,使得选出的数在 aaa 排序后的序列中是一段连续区间,且极差最小。因为如果存在一种最优方案选取的不是连续区间,那么将这些数最左端和最右端内全部选取,仍然符合题意,极差不变,但是选择的数是连续区间。 因此将 aaa 排序后,考虑双指针 阅读全文
posted @ 2023-01-23 13:36 HappyBobb 阅读(14) 评论(0) 推荐(0)
摘要:题意:有 nnn 天,每天有上午,中午,下午,每一个时间段可以吃三种食物中的一种,但相邻时间段不能相同并且早上只能吃两种之一。给定 nnn,求合法吃食物方案总数。 考虑 nnn 天,每个时间段独立,所以有 3n3n3n 个时间段,第 1,4,7,⋯1,4,7,\cdots1,4,7,⋯ 的时间段只能 阅读全文
posted @ 2023-01-19 14:41 HappyBobb 阅读(8) 评论(0) 推荐(0)
摘要:考虑什么样的区间可能满足要求。 满足要求的区间即一个是 SSS 按照升序排序后的子串,那么显然这个子串也升序排序。 所以我们可以发现第一个要求是:区间 Sl,Sl+1,⋯ ,SrS_l, S_{l+1}, \cdots, S_rSl​,Sl+1​,⋯,Sr​ 升序排序。 但是区间就算升序排序,也不一 阅读全文
posted @ 2023-01-16 08:27 HappyBobb 阅读(17) 评论(0) 推荐(0)
摘要:套路最短路。 考虑两数 a,ba,ba,b,若 gcd⁡(a,b)≠1\gcd(a,b) \neq 1gcd(a,b)=1,那么 a,ba,ba,b 一定有公共质因数。 于是可以考虑对于每一个点 iii,向 aia_iai​ 的所有质因数连边,然后广搜即可。 // LUOGU_RID: 99311 阅读全文
posted @ 2023-01-11 12:35 HappyBobb 阅读(10) 评论(0) 推荐(0)
摘要:比较容易的一道 Ynoi。 可以发现,很多点的答案就是整棵树取两点异或的最大值。或者说,设整棵树异或最大的两点为 u,vu,vu,v,那么对于所有 iii,以 iii 为根的子树不包含 uuu 且不包含 vvv,那么 ansi=au⊕avans_i = a_u \oplus a_vansi​=au​ 阅读全文
posted @ 2022-12-23 09:55 HappyBobb 阅读(14) 评论(0) 推荐(0)
摘要:由于边权为 111,直接广搜并且 O(n2)O(n^2)O(n2) 枚举两点后取最大值即可通过本题。并不需要用到最短路等其他做法。注意多测清空。复杂度比最短路算法更优,无需注意什么其他问题。 #include <iostream> #include <cstdio> #include <vector 阅读全文
posted @ 2022-12-21 21:14 HappyBobb 阅读(19) 评论(0) 推荐(0)
摘要:考虑字典树上深搜。 由于字符集只有 abc\texttt{abc}abc,所以深搜是可过的。 建立完字典树后,从根开始,维护现在是否有存在一个不同的字符,如果有,那么下一个字符肯定和询问的串相同,如果没有不同,那么下一个可以选择相同也可以选择不同的。 #include <iostream> #inc 阅读全文
posted @ 2022-12-20 10:48 HappyBobb 阅读(13) 评论(0) 推荐(0)
摘要:可以发现,牛如果想要去其他地点的雨棚,那么一定走最短路。 所以可以先 O(n3)O(n^3)O(n3) 处理最短路,然后二分答案,将所有最短路 ≤\leq≤ 当前二分的时间的边加入。 然后网络流判断可行性,即超级源点向每一块田地连一条容量为牛的个数的边,然后把田地和雨棚拆点,雨棚向超级汇点连容量为雨 阅读全文
posted @ 2022-12-19 16:03 HappyBobb 阅读(8) 评论(0) 推荐(0)
摘要:本来以为出了个板子,但好像没有被喷太惨。 题目出来后,出题人其实给了一个三次方的做法,而枚举天数暴力算也是三次方的。 而在公开赛几天前,这玩意被加强了,原因是出题人突然发现可以拓扑排序。 然后暴力被卡成 909090 分。但是我们可以考虑 bitset 优化。显然每天肯定能把现在能做的全部做完,然后 阅读全文
posted @ 2022-12-12 22:00 HappyBobb 阅读(62) 评论(0) 推荐(0)

上一页 1 ··· 5 6 7 8 9 10 11 12 13 ··· 23 下一页