把博客园图标替换成自己的图标
把博客园图标替换成自己的图标end

QOJ #9438. Two Box

题面传送门

首先考虑给定一个状态怎么计算答案。考虑建立一棵 \(m\) 层的树,在第 \(d\) 层的时候,考虑每个极长连续段 \([l,r]\) 满足 \(\max\limits_{i=l}^{r} a_i\geq d\),则将 \([l,r+1]\) 看作这棵树上的一个点,向 \(d+1\) 层中所有被这个区间包含的点连边。

对于第 \(i\) 层的第 \(j\) 个点,记 \(f_{i,j,S}\) 表示 \(i\) 层第 \(j\) 个点所对应区间内已经选择好了, 对于 \([1,i]\) 中的石子,\(S\) 在黑色盒子中。对于每个点要做的,就是从子树内做异或卷积,然后抹去最高位(\(r=n\) 特判)即可。

直接这样做关于 \(m\) 不是多项式的,但是观察到,对于某个固定的 \((i,j)\)\(S\)\(1\) 个数相同的状态答案是一样的,因此 \(S\) 状态可以简化成 \(O(m)\) 级别的,一次 FWT 复杂度是 \(O(m^2)\),总共做到单次复杂度 \(O(nm^3)\)

然后如果带修的话就因为一次修改影响到的点只有 \(O(m)\) 个,暴力修改即可,用一个线段树维护区间乘积,时间复杂度 \(O((n+q)m^2(m+\log n))\)

submission

posted @ 2024-10-07 15:52  275307894a  阅读(26)  评论(0编辑  收藏  举报
浏览器标题切换
浏览器标题切换end