摘要:
分析条件,不难发现仅有以下两类边: 1.若两区间严格相交(有公共段)且不相互包含,则两区间之间有双向边 2.若两区间相互包含,则小区间向大区间有单向边 对于第1类边,由于区间长度严格递增,可以通过线段树+并查集维护 具体的,1操作时在(线段树)区间$(l,r)$上加入该点,并与在$l$和$r$处已加 阅读全文
摘要:
将序列分块,对每一个块维护以下信息: 1.块内的最大值$\max$和区间减的懒标记 2.存在的权值(包含即可)以及对应元素的链表(首尾、长度) 对于散块修改/询问,可以利用2重构序列,即可$o(\sqrt{n})$修改/询问 对于整块修改,注意到最大值单调不降,因此在$o(\Delta \max)$ 阅读全文
摘要:
若原序列众数不唯一,显然答案即为$n$,不妨特判此类情况 结论:记$x$为原序列的众数,则$x$也为答案序列的众数 反证法,假设$x$不是答案序列的众数,则不断延长答案序列直至$x$是其众数 不难发现:这样的时刻必然存在,且此时众数不唯一,即与答案的最长性矛盾 进一步的,对答案序列的众数出现次数分类 阅读全文
摘要:
问题即求$\sum_{i=0}^{d}(out\cdot in)^{d}_{u,v}$,进而转换为$[u=v]+(out\cdot \sum_{i=0}^{d-1}(in\cdot out)^{i}\cdot in)_{u,v}$ 注意到$in\cdot out$是$k\times k$的,并使用类 阅读全文
摘要:
记$S=\{(i,j)\mid s_{i,j}=*\},T_{i,j}$表示获得$(i,j)$上礼物的时间,问题即求$E(\max_{(i,j)\in S}T_{i,j})$ 考虑$\min\max$容斥,即$\max_{(i,j)\in S}T_{i,j}=-\sum_{S'\subseteq S 阅读全文
摘要:
性质1:对$i$操作后,$a_{i}+a_{i+1}$的值不变 性质2:若初始$a_{i+1}-a_{i}\le b_{i}$,则最终$a_{i+1}-a_{i}=b_{i}$ 换言之,不断合并$a_{i+1}-a_{i}\le b_{i}$,对于合并后的每一段,根据总和和差值即可解出 在此基础上, 阅读全文
摘要:
说明 记$N=HW$,时间复杂度均用$N$描述 定义$o_{n}$表示(结束状态下)操作$n$次后状态不变的概率 定义$g_{n}$表示(初始状态下)操作$n$次恰成为结束状态的概率 定义$f_{n}$表示(初始状态下)操作$n$次后恰首次成为结束状态的概率 记$O(x),G(x)$和$F(x)$为 阅读全文
摘要:
考虑$u$对答案的贡献(指以$u$为第一次战争)—— 注意到$v$崛起时有贡献,当且仅当上一次崛起在$u$与$v$不同的儿子中(将$u$自身也看作一棵子树) 换言之,问题可以抽象为有$A_{i}$个$i$,将这$\sum_{i=1}^{k}A_{i}$个数任意排列后最大交替次数 记$x=\max_{ 阅读全文
摘要:
关于修改,通过segment tree beats不妨转换为"将区间内的最小值均加上$x\ge 0$" 关于询问,通常即维护最大前缀/后缀/子段和,但显然无法对其直接打上述操作的懒标记 维护一个阈值$x_{\min}$,表示当且仅当$x\ge x_{\min}$时其子树内会发生某个信息的修改 关于$ 阅读全文
摘要:
为了方便,以下记$w=\log \max a_{i}$(本题中$w\le 128$) 建立线段树,对每一个点维护$w$个数,第$i$个数表示区间内(二进制下)第$i$位为1的数个数 将这$w$个数用写成二进制的形式,得到一个$w\times \log len$的01矩阵,转置后即变为$\log le 阅读全文
摘要:
维护一棵线段树,区间$[l,r]$上维护一个$C\times C$的矩阵,表示对应的最短路 考虑矩阵$A$和$B$合并,即$merge(A,B)_{i,j}=\min_{1\le k\le C}A_{i,k}+B_{k,j}$ 记$pos_{i,j}$为取到最小值的$k$,不难证明其具有单调性(对$ 阅读全文