摘要:
"Link" 我们知道最短的路径应该是在位数最少的前提上,从高往低每位尽可能小的答案。 对于一条边,我们将其拆成两条有向的链。 我们把每个点的出边按按长度划分成多个集合,然后分层图bfs即可。 阅读全文
摘要:
"Link" 先建出AC自动机,然后把终止状态去掉,这样Trie图上的一条路径就对应了一个不包含Forbidden Subwords的字符串。 考虑如何对单向无限的串计数。单向无限的串是一条从根开始的无限长的路径,最后肯定会走到某个scc(自环也是强连通的)。 如果一个scc包含了不止一个简单环,那 阅读全文
摘要:
"Link" 设$k=\lfloor\frac{100}p\rfloor$,那么查询就是求$\frac 1k$绝对众数。 因为只要保证输出包含所有$\frac 1k$绝对众数,所以线段树维护Moore投票法即可。 阅读全文
摘要:
"Link" 我们可以这么看: 初始:$a=I,b=I,ans=0$。 $g(1):b=b B$ $g(0):a=a A,ans\leftarrow ans+a b$ 阅读全文
摘要:
"Link" 这个是$O(n\sqrt{n\log n})$的过不去的辣鸡做法。 还是分块。每块还是维护一下$sum,pre,suf,ans$的值/凸包。 修改对于整块的打个标记就完事了。 零散的考虑暴力修改,$a,sum,suf,pre$可以直接暴力。 然后用类似于Subtask 3的合并方式一样 阅读全文
摘要:
"Link" 先考虑单点修改的做法: 线段树上每个节点维护四个信息:$sum,pre,suf,ans$。分别代表区间和,区间最大前缀和,区间最大后缀和,区间最大子段和。 合并: $sum_x=sum_l+sum_r$ $pre_x=\max(pre_l,sum_l+pre_r)$ $suf_x=\m 阅读全文
摘要:
"Link" 给每个点新定义权值$c_i=\max(0,a_i b_i)$,这样我们将限制变成了在$i$点时的任意时刻都至少有$c_i$元钱。 我们可以推出两个简单的结论: 1、我们经过了一个点多次,那么我们一定是在最后经过的一次捐赠。 2、在满足$1$的前提下,我们会尽量先在$c_i$大的点捐赠。 阅读全文
摘要:
"Link" 我们认为一条路径不覆盖它的起点,这样就能够消除第二条限制。 然后我们先把第三条限制抛开不管,要做的实际上就是求一个最小链覆盖。 每次我们会把一个点加入链覆盖,并且这个费用是单调递增的。 那么每次询问时二分找到费用小于$C$的最后一次覆盖,后面剩下的全部直接用$C$即可。 阅读全文
摘要:
"Link" 这题有两种推法,一种是生成函数,还有一种是线性代数。 一、生成函数 设进行$t$轮之后得到的数为$i$的概率为$f_{t,i}$。 我们知道有: $$f_{0,i}=p_i,f_{t+1,i}=\sum\limits_{j=i}^n\frac{f_{t,j}}{j+1}$$ 设$P_t 阅读全文
摘要:
"Link" 我们知道做长度为$n$的循环卷积其实就是做长度为$n$的DFT,这可以用单位根反演证明。 注意到这里$n=2^a3^b5^c7^d$,所以并不能够像平时做长度为$2^k$的DFT那样直接分半,而是分为$n$的最小质因子块。 剩下的就跟平时的DFT差不多了,处理rev数组可能会比较麻烦。 阅读全文