摘要:
本质上还是官方题解的分组并利用 \(M\) 不大的思路。 询问次数 \(Q\) 离最简单的每个扫一遍就可以知道答案的做法少了 \(50\) 次。我们考虑如何减少这个次数。 首先你可以发现一次询问可以覆盖到两个数,也就是说所有的数都被覆盖时只需要询问 \(500\) 次。 我们考虑把不同的对拉出来,然 阅读全文
摘要:
信息学竞赛教室 1 门牌号 阅读全文
摘要:
把之前留存在 dp 学习记录里的扒下来了,也方便寻找。 发现 KMP 重要的实际不在 KMP 本体,而是前缀函数的处理,知道怎么处理前缀函数就知道怎么写 KMP 了。 前缀函数在 OIWIKI 上有详解,因为个人看第二个优化感觉有点糊,所以重点写一下第二个优化。 令前缀函数为 \(\pi_i\)。 阅读全文
摘要:
好久之前在洛谷上写了一篇,但是之前迁移博客园的时候忘记迁这篇过来了,看了看写的也就那样,还是自己再写一篇,相当于重学一遍罢了。 令字符集为 \(S\),\(s_0\) 为原串。 首先是 manacher 一个最著名的思路:在 \(s_0\) 的开头结尾和每个字符中间加入一个不在 \(S\) 中的字符 阅读全文
摘要:
o(^▽^)o 阅读全文
摘要:
好写程度:\(E>D>C\)。 好想程度:\(C>D=E\)。 总结:C 是全场最难。 我们考虑把两个操作对全体的 \(a_i,b_i\) 都做一遍,会发现我们只会做这两遍,不会再有嵌套的了,因为都做过一遍后 \(\{a\}\) 中 0 的数量只会减少,而且即使再做一遍也无法给 \(\{b\}\) 阅读全文
摘要:
前几天打算学写吉司机线段树,写到区间历史最值的时候炸了,这些标记的复杂性让我有点望而却步,但是当我看到 warzone 大佬的矩阵角度理解吉司机线段树时,我知道这就是我想看的东西。 作为我学完之后的总结,我决定写一篇学习笔记。 warzone 的题解更为简洁,而我写的这篇会稍微更加详细一点,毕竟还是 阅读全文
摘要:
实际上很板。 考虑在 \(i\) 后小于 \(val_i\) 的数都对答案没贡献,所以我们只需要知道在 \(i\) 后且大于 \(val_i\) 的数的和以及有多少个这样的数就可以了。 知道了我们要求什么,就可以一眼权值线段树。 从后往前扫不断加入数,然后访问对应区间即可,当然因为值域比较大,所以还 阅读全文
摘要:
设计状态什么的就不讲了,这里是对其它题解的优化。 怎么优化呢,我们可以知道的是我们只要明确了当前行的状态,上一行的可选集就是知道的,如果我们明确了当前行以及上一行的状态,那么上上行的可选集就是知道的,于是我们就可以使用二进制子集枚举来写,这样就减去了全部不合法的枝叶,我们可以保证遍历到的三行的状态都 阅读全文