NOIP 第十三次

DS,好!

A

放一个极其混乱邪恶的做法(

扫描线,然后变成维护一个集合 $S$,支持加数、给定 $x$ 求 $\sum\limits_S(i\oplus x)^2$。

设 $k_i=(i\oplus x)-i$,于是 $\sum\limits_S(i\oplus x)^2=\sum\limits_S(i+k_i)^2=\sum\limits_Si^2+2\sum\limits_Sik_i+\sum\limits_Sk_i^2$。

第一项好维护。第二项维护一个 $d_i$ 表示 $i$ 位为 $1$ 的数之和,就好维护了。

第三项把 $k_i^2$ 再展成完全平方,然后只有中间的一项不好维护,

再维护 $c_i$ 表示 $i$ 位为 $1$ 的数的个数,$e_{i,j}$ 表示 $i,j$ 位都为 $1$ 的数的个数,就好维护了。

实现细节建议自己思考,或者来线下问我也行,因为我发现这玩意没法书面地写出来。

B

设 $f_i$ 表示以 $i$ 结尾的子区间的贡献和,考虑咋算 $f_i$ 比 $f_{i-1}$ 多了多少。

发现 $f_i-f_{i-1}$ 就是在所有 $[j,i)|j\le i$ 后加入一个 $i$,$i$ 新做出的总题数,

考虑一道题 $x\in[l_i,r_i]$,设它在 $i$ 前上次被做出是在 $p_x$ 处,

于是在所有 $[j,i)|p_x<j\le i$ 后加入 $i$ 时,$x$ 被 $i$ 新做出,$i$ 新做出的题数增加 $i-p_x$,

于是 $i$ 新做出的总题数就是 $\sum\limits_{x=l_i}^{r_i}i-p_x$。

发现 $p$ 需要区间覆盖,区间求和,线段树维护。

C

设 $s_i$ 表示 $i$ 到根点权和。

左半支,$t$ 合法当且仅当 $a_t\le s_u-s_t\Leftrightarrow a_t+s_t\le s_u$,

右半支,$t$ 合法当且仅当 $a_t\le s_u+s_{\text{fa}(t)}-s_{\text{LCA}(u,v)}-s_{\text{fa}(\text{LCA}(u,v))}\Leftrightarrow a_t-s_{\text{fa}(t)}\le s_u-s_{\text{LCA}(u,v)}-s_{\text{fa}(\text{LCA}(u,v))}$。

树链数 $\le$ 某数的个数,主席树维护之。启发式合并就好了。

D

对原树任意剖一下,然后链数等于叶子数,不超过 $100$。考虑分别算 $i,j$ 在相同 / 不同链上的贡献。

注意到一个点 $i$ 向链顶 / 链底延伸,形成的树链的 $(f,g)$ 对都不超过 $O(\log V)$ 对,

记下这些数对的位置,记这些树链为 $i$ 的前缀 / 后缀。

考虑 $i,j$ 在相同链上的贡献,对每个 $i$ 统计其所有后缀即可。

考虑 $i,j$ 在不同链上的贡献,枚举这两条链,分情况讨论:

链顶无祖先关系

如图,$i\to j$ 的链一定由 $u$ 的一段后缀,$u\to v$,$v$ 的一段后缀拼成,

分别枚举 $u$ 的这段后缀、$v$ 的这段后缀取到哪个数对即可。

链顶有祖先关系

如图,$i\to j$ 的链一定由 $u$ 的一段前缀 / 后缀,$u\to v$,$v$ 的一段后缀拼成,

分别枚举 $u$ 的这段前缀 / 后缀,$v$ 的这段后缀取到哪个数对即可。

posted @   Jijidawang  阅读(6)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
点击右上角即可分享
微信分享提示