2025.3.29 NOI 模拟赛 题解

比赛

T1 NFLS #18040. aw

题意

一棵 \(n\) 个树的点,点 \(i\) 上有 \(a_i\) 个物品,按照给定的顺序依次操作每条边,操作 \((u,v)\) 时可以把 \(u\) 上的物体全部移到 \(v\) 上,或把 \(v\) 上的物体全部移到 \(u\) 上,求 \(2^{n-1}\) 种选择下,最终情况物体两两距离和的总和,\(n\le10^5\)

分析

对于边 \((u_i,v_i)\),预处理 \(cu_i,cv_i\) 表示以这条边为根的情况下子树 \(u_i\)\(v_i\)\(a\) 的总和

以下计算的为每种定向的期望权值,乘以 \(2^{n-1}\) 即为答案

按输入顺序依次考虑每条边 \((u,v)\),令 \(p_{x,w}\) 表示此时\(x\) 的权值为 \(w\) 的概率,当方向定为 \(u\to v\) 时,对期望权值的贡献为 \(\frac12\sum_w p_{u,w}(cu-w)(cv+w)\),定为 \(u\gets v\) 时贡献为 \(\frac12\sum_w p_{v,w}(cu+w)(cv-w)\)

总贡献等于

\[\frac12\left(cu\cdot cv\sum_w p_{u,w}+(cu-cv)\sum_{w}p_{u,w}w-\sum_w p_{u,w}w^2+cu\cdot cv\sum_w p_{v,w}+(cv-cu)\sum_w p_{v,w}w-\sum_w p_{v,w}w^2\right) \]

显然 \(\sum_wp_{\ast,w}=1\),令 \(f_u=\sum_{w}p_{u,w}w\),令 \(g_u=\sum_w p_{u,w}w^2\),则贡献等于

\[\frac12\left(cu\cdot cv+(cu-cv)f_u-g_u+cu\cdot cv+(cv-cu)f_v-g_v\right) \]

转化为如何维护 \(f\)\(g\)(由于 \(p\) 的定义是基于当前的,\(f\)\(g\) 同样也是基于当前的,需要动态维护)

初始 \(f_i=a_i\)\(g_i=a_i^2\)

处理完 \((u,v)\) 后,显然令 \(f_u=f_v=\frac{f_u+f_v}2\),令 \(g_u=g_v=\frac12\sum_{w,x}p_{u,w}p_{v,x}(x+w)^2=\frac12(g_u+g_v+2f_uf_v)\)(注意需要先进行 \(g\) 的赋值)

时间复杂度 \(O(n)\)

代码

参考

T2 NFLS #18041. awa

T3 NFLS #18042. awaw

题意

一个 \(m\times m\) 的网格,其中放置 \(n\)\(w\times h\) 的矩形,第 \(i\) 个左上角在 \((x_i,y_i)\)(覆盖格点 \((x_i\sim x_i+w-1,y_i\sim y_i+h-1)\)),求所有没有被覆盖的格点构成的四连通块大小平方和,\(n\le10^5\),多测 \(T\le 300,\sum n\le5\times10^6,m\le10^9\)

分析

\(m\) 行分块,块长为 \(w\),这样每个矩形至多同时存在与两块中

依次考虑每一块,对于块中的一列,显然没有被占据的一定为一个区间

设块内一共有 \(t\) 个矩形,则这一块中没有被占据的位置从左到右可以划分为 \(O(t)\) 个互不重叠的矩形(上下边界分别 \(O(t)\) 段,可以单调栈求出,但是比 暴力 还慢)

总计 \(O(n)\) 个矩形,使用并查集维护连通性,同一块内直接从左到右扫描,相邻块之间双指针

注意若有连续多个块内都没有矩形,则需要缩为一个整体,否则时间复杂度会退化为 \(O(\sum n\log n+\frac mw)\)

除了分块时的排序外都可做到线性(把并查集换为建图求连通块)

时间复杂度 \(O(\sum n\log n)\)

代码

参考

比赛结果

\(20+40+60\)\(\text{rk}\) \(36\)

posted @ 2025-03-30 20:58  Hstry  阅读(10)  评论(0)    收藏  举报