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$ 的这段后缀取到哪个数对即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具