摘要:
题目分析: 对于向上取整我们总有,$\lceil \frac{\lceil \frac{n}{a} \rceil}{b} \rceil = \lceil \frac{n}{a*b} \rceil$这个不难想到。 然后朴素的dp很容易想到,用上面的式子优化一下就行了。 代码: 阅读全文
摘要:
题目分析: 观察前3个点,$361=19*19$,所以可以发现实际上就是快速幂,然后模数猜测是$998244353$,因为功能编号里面有这个数字,用费马小定理处理一下。 $pts:12$ 观察第4个点,读入很大而结果很小,说明模数不是很大,所以枚举法,配合欧拉定理可以求出来模数为$1145141$, 阅读全文
摘要:
题目分析: 建出后缀自动机,然后把A串用倍增定位到后缀自动机上,再把B串用倍增定位到后缀自动机上。 SAM上每个点上的A串根据长度从小到大排序,建点,依次连边。 再对于SAM上面每个点,连到儿子的边,同时连到儿子的最小A串的边。 对于m组关系,建立x连到y定位到的SAM上的点的边,同时连y所能匹配的 阅读全文
摘要:
题目分析: 用数论分块的思想,就会发现其实就是连续一段的长度$i$的高度不能超过$\lfloor \frac{k}{i} \rfloor$,然后我们会发现最长的非$0$一段不会超过$k$,所以我们可以弄一个长度为$i$的非$0$段的个数称为"元",然后用"元"去递推。 这个"元"的求法用DP:令数论 阅读全文
摘要:
题目分析: 这题除了分类讨论就没啥了。。。 容易发现问题实际就是所有操作选和不选按顺序执行的所有答案和。考虑每个点在多少种情况下会有tag。 那么,考虑新插入一个[l,r],所有有交集的点都会被清空,所以这些点答案不变。 然后考虑有交集的点中间[l',r']是子集关系的点,这些点答案并不是不变,而是 阅读全文
摘要:
题目分析: 按位处理即可 代码: 阅读全文
摘要:
题目分析: 答案显然只有{-1,0,1,2}四种。 对于答案等于-1的情况,只有两种情况,一种是只剩一只跳蚤,另一种是只剩两只跳蚤且他们四连通,这个很好判。 对于答案等于0的情况,那说明联通块大于1,把图离散出来连边并查集判就可以了。 对于答案等于1的情况,我们要考虑唯一的联通块是否存在割顶,具体的 阅读全文
摘要:
题目分析: 好题!我们发现题目实际是要求出从某个左端点开始跑出去的BB型有多少个和从某个右端点开始跑出去的AA型有多少个。 发现这个问题是对称的,所以只考虑从左端点跑出去的BB型有多少个就可以了。 我们不妨考虑长度为$k$的BB型,那么我们把字符串每$k$个化成一个整体,然后如果从$i$开始存在一个 阅读全文
摘要:
题目分析: 我们思考正好被k个区间覆盖的情况,那么当前这个子段是不是把所有的点分成了两个部分,那么在两个部分之间相互连k条线,再对于剩下的分别连线就很好了?这个东西不难用组合数写出来。 然后我们要证明每个区间的期望长度是点数加一分之一,这个很容易,归纳法证明就行了。 代码: 阅读全文
摘要:
题目分析: 这道题我是乱搞的,因为他说$01$串是随机的。 那么我们可以猜测能够让LCP变大的地方很少。求出后缀数组之后可能让LCP变大的地方就等价于从大到小往height里动态加点同时维护这个点左右两边的单调栈。 这个事情用线段树模拟就行了。 用暴力跑一下发现果然不大,只有200w,其中很多还是废 阅读全文