07 2024 档案

摘要:不知道大家做没做过数列分块基础9题? 插入删除操作可以用链表,线段树等数据结构都不好维护,考虑分块。对于修改操作,暴力重构受影响块的链表,发现除首尾块外,其他块都可以看作是区间左移一位,所以加头删尾即可。 每个块开一个数组(绝对不能是 \((un\_)map\),不然你会和我一样死的很诡异),表示这 阅读全文
posted @ 2024-07-31 21:25 长安一片月_22 阅读(16) 评论(0) 推荐(0) 编辑
摘要:给一篇题解。(下面这张图是从 luogu 上粘贴的,因为不太会画图) 其中纵坐标为 \(t\),横坐标为 \(a_i\)。 发现同颜色块只有平行四边形和直角梯形(等腰直角三角形)两种情况。 可以将直角梯形削去左下角,分成两部分考虑。 等直可以直接暴力插入区间,总个数 \(O(n)\)。 平行四边形可 阅读全文
posted @ 2024-07-31 21:21 长安一片月_22 阅读(10) 评论(0) 推荐(0) 编辑
摘要:考试一道题题解。 30pts:枚举所有串,\(check\) 是否可行。 60pts:做 \(bfs\),暴力推演变化过程,用 \(map\) 去重,时间复杂度 \(O(nC_{n}^{n/3}C_{n-n/3}^{n/3})\)。 #include<bits/stdc++.h> #define l 阅读全文
posted @ 2024-07-31 21:17 长安一片月_22 阅读(10) 评论(0) 推荐(0) 编辑
摘要:在考场遇到了这道题,感觉很有意思。 当时直接想到的就是虚树,可惜打挂了。 后来改对了,写篇题解纪念一下。 首先看到 \(\sum M_i\le 2\times 10^5\),很容易想到虚树的数据范围。 我们设 \(dp_i,fg_i\) 表示将 \(i\) 的子树全部染白或染黑需要多少次,\(vis 阅读全文
posted @ 2024-07-24 15:06 长安一片月_22 阅读(9) 评论(0) 推荐(0) 编辑
摘要:后缀自动机维护子串公共后缀方便一点,所以直接倒序插入字符串即可。 我们给所有前缀打上标记,然后跑树形 \(dp\),设 \(sum_i\) 表示第 \(i\) 个点的子树内有多少个前缀,\(ans\) 统计 \(\sum \text{LCP}(T_i,T_j)\),则有: \[ans=\sum\li 阅读全文
posted @ 2024-07-10 10:22 长安一片月_22 阅读(8) 评论(0) 推荐(0) 编辑
摘要:讲一种自认为最暴力的方法。 首先肯定还是用差分的思想,对于每一张卡片进行重新标号,在卡片串与卡片串中插入特殊字符,然后找重复了 \(n\) 次的子串。 这里我们对于每一个子串开一个大小为 \(n\) 的标记,表示他在不在第 \(i\) 个卡片串里。 然而这样很明显容易 \(\text{MLE+TLE 阅读全文
posted @ 2024-07-10 09:33 长安一片月_22 阅读(15) 评论(0) 推荐(0) 编辑
摘要:所有子串,一眼 \(\text{SAM}\)。 从根开始一直往下走,走到任何一个点都代表一个子串。维护 \(sm\) 表示每个子串有几个(\(t=0\) 就当一个),可以用树形 \(dp\) 跳后缀链接树,然后暴力跑 \(\text{SAM}\) 即可。 当然我们发现这样时间复杂度会爆炸,因为第二部 阅读全文
posted @ 2024-07-10 08:09 长安一片月_22 阅读(9) 评论(0) 推荐(0) 编辑
摘要:我们设 \(dp_{i,j}\) 表示第 \(i\) 到第 \(j\) 个括号合并为序列且最外层不是括号 \(i\) 的可能性,\(f_{i,j}\) 表示最外层是括号 \(i\) 的可能性。则有: \[\begin{cases} dp_{i,j}=\sum f_{i,k}(dp_{k+1,j}+f 阅读全文
posted @ 2024-07-08 10:12 长安一片月_22 阅读(14) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示