HDU 24 多校 1 口胡
A 循环位移
将 \(A\) 复制成 \(2\times n-1\) 的长度,于是可以得到一个新的 \(A'\)。
对 \(A',B\) 分别哈希即可,双哈希需要比较精细的实现来卡进空间。
B 星星
施简单背包即可,出题人没卡掉。
C 树
\(f(u,v)=\max(a_u,a_v)\times |a_u-a_v|=\max(a_u,a_v)^2-\max(a_u,a_v)\min(a_u,a_v)\),后者即 \(a_ua_v\),记录下子树内 \(a_u\) 的和即可 \(O(1)\) 求出。
考虑前者,使用权值线段树维护 \(\max(a_u,a_v)^2\),其中 \(v\) 是 \(u\) 的子树,剩下考虑利用线段树合并维护,维护下区间内点的个数,区间平方和,每次合并的时候将右侧的区间平方和乘上左侧数的个数累加到答案就行,\(O(n\log n)\)。
D 传送
对加边删边施线段树分治,那么问题变为如何快速求出时间的总和。
对于可撤销并查集,使用类似线段树打标记的方式维护,具体地,每次递归到叶子节点 \(t\),我们给 \(1\) 的祖先打一个加标记 \(t\),表示 \(t\) 时刻这些点可以到达,接下来撤销的时候就将父亲标记下传到祖先,加边时需要注意需要撤销掉祖先节点标记的影响。
E 博弈
实际上没有博弈。
当 \(\sum s_i\) 为偶数时,只需要计算出平局的概率 \(p\),这样 Alice 胜的概率就是 \(\frac{1-p}{2}\)。
首先只要有一个字符是奇数那么平局概率就是 \(0\),接下来考虑计算相等的概率,那么考虑怎么算这个东西,考虑先分配字符的位置,得到总方案数为 \(\binom{\sum s_i}{s_1,s_2,\ldots,s_n}\),然后再分配相等,每次相当于分一半然后 copy 后面的,为 \(\binom{\frac{1}{2}\sum s_i}{\frac{s_1}{2},\frac{s_2}{2},\ldots,\frac{s_n}{2}}\),相除即可。
当 \(\sum s_i\) 为奇数时,容易发现去掉最后一个字符后就转化成了偶数的情况,只需要计算出平局的概率 \(p\),这样 Alice 胜的概率就是 \(\frac{1+p}{2}\),计算平局概率的方法同上。
F 序列立方
所谓子序列出现次数立方可以看成取出三个相同的子序列的方案数。
于是直接令 \(f_{i,j,k}\) 表示三个序列的末尾分别是 \(i,j,k\) 位,考虑转移,容易发现对于一个 \(i,j,k\) 满足 \(a_i=a_j=a_k\),那么 \(<i,<j,<k\) 的数组均可以转移到它,于是计三维前缀和即可做到 \(O(n^3)\)。
G 三元环
最终的图是一个完全有向图,所以我们取出任意一个点三元组,考察他们的出度。
一个三元环就是 \(deg\) 均为 \(1\),那么非三元环是存在一个点 \(deg=2\),于是求出每个点的出度 \(d_i\),答案就是 \(\binom n3-\sum \binom{d_i}{2}\)。
接下来求 \(d_i\),问题等价于,对 \(i\) 求(\(i\to j\) 的边):
- \(i<j,f_i<f_j,g_i<g_j\) 的点数。
- 以及 \(j<i,f_j<f_i,g_j<g_i\) 的点数(反向计算用)。
两次三维偏序即可,时间复杂度 \(O(n\log n)\)。
H 位运算
按位考虑即可,反正每一个 bit 最多 16 种情况,乘起来就行。
I 数位的关系
先按惯例差分成 \([1,r]-[1,l]+[l]\),首先考虑 \([l]\) 的做法。
令 \(f_{i,j,k}\) 表示枚举到 \(i\),子序列长度是 \(j\),且 \(j\) 位置上是 \(k\),直接大力 DP 即可,复杂度 \(O(n^2|\Sigma|)\)。
接下来考虑施数位 DP,容易发现的是,问题可以归结成枚举最高位一直顶到哪,从这里开始,我们后面就可以乱填。
枚举最高位顶到哪,以及后一位填谁,我们把问题归结到了 \(n|\Sigma|\) 次前后半合并的问题上。
前半同上,后半则可以类似 \(f\) 设计 DP 不过需要枚举 \(i\) 位置的字符,以及记录前面是不是前导 \(0\),细节比较多。
两边可以分开做,于是复杂度就可以接受了。
J 众数
数据随机的情况下,最大值的众数几乎和全局最大值差不太多。
于是取出区间的前 \(k\) 大,然后只计算这些数的出现次数,具体地,对 \([l,r]\) 施最大值分治,取出最大值位置 \(p\),那么给 \(a_p\) 记上 \((p-l+1)(r-p+1)\) 的贡献,然后递归放入 \([l,p-1],[p+1,r]\),直到最大值脱离了前 \(k\) 大。
K 树上的 mex
二分 mex \(k\),考虑 \(<k\) 的所有颜色。
对于颜色 \(c\),我们会发现由于其虚树呈一条链,我们可以将这些虚树抽出来,然后就可以得到一些区间,这些区间内的两点组成的路径不合法。
具体而言,就是链端的所有子树,以及相邻虚树上的子树去掉儿子的子树。这是若干个区间。
对这些矩形求面积并,判断其是否超过 \(n^2\) 即可。
L 并
离散化后施二维前缀和,处理出被 \(k\) 个矩形覆盖的矩形面积和,记为 \(f_k\)。
最终取 \(i\) 个矩形时答案即为 \(\sum_{k=1}^n f_k(1-\frac{\binom{n-k}{i}}{\binom{n}{i}})\)。

浙公网安备 33010602011771号