MX 练石 2025 NOIP #6
简单场。
2025 --【炼石计划 NOIP】-- 第六套
时间:4h (2025.09.14 8:00~12:00)
题目数:4
难度:
| A | B | C | D |
|---|---|---|---|
| \(\color{#52C41A} 绿\) | \(\color{#FFC116} 黄\) | \(\color{#FFC116} 黄\) | \(\color{#3498DB} 蓝\) |
| *1600 | *1500 | *1400 | *2100 |
估分:100 + 100 + [15,?) + 0 = [215,?)
得分:100 + 100 + 68 + 0 = 268
Rank:30/245
场祭
读题。
开 A,好像有点困难,硬控 10min 发现原来是区间 dp,令 \(f_{l,r,p}\) 为 \(a_l \sim a_r\) 是否满足条件 \(p\),转移直接暴力枚举断点,再暴力枚举每个合并条件,\(O(n^3m) = 3 \times 10^8\) 且极小常数,1s 还是比较轻松的,而且区间 dp 还有个 \(\frac 1 2\) 的常熟来着。
40min。
开 B,读懂题之后发现就是个优先队列,但是好像不怎么会维护下一个 \(\le now\) 的数是什么。
哦会了,似乎是很典的东西(?先把正数都加起来,然后就是在一串负数上选子集了。考虑给每个状态标记一个 \(nxt\) 表示下一轮该考虑哪一个位置,初始状态 \(nxt = 1\),每次在一个状态检测完之后,分别将「加上 \(nxt\)」和「加上 \(nxt\) 减去 \(nxt-1\)」这两个状态丢到优先队列里,可以发现是对的。
C 不会,刚想写代码的时候才发现 \(m=n\),是一棵基环树,对着大样例推了推,发现只需要分讨环上 - 边的数量 \(=0\)、\(=1\)、\(\ge 2\) 就可以了,看起来很对,写写写,草怎么有个大样例没过。
尝试检查错误,但是好像没啥错误啊,于是打了个暴力去拍一拍,虽然确实拍出来了一个小数据但是已经没时间了。
补题
补 C,草竟然是 dfs 挂了,怒。
好像一直很不会图的 dfs 来着/jk
补 D,好像还是比较简单的,容易想到枚举 lca,然后发现固定 \(j\) 更新 \(i\) 不是容易的,方法是把一个子树内的点塞到一棵 01trie 里,然后只能遍历其它所有子树分别检查。要枚举整棵子树很自然地想到 dsu on tree,那么重子树对轻子树的贡献直接跑上面的暴力;轻子树对重子树的贡献考虑另外在全局开一棵 01trie,把轻子树全都塞进去,然后在 dfs 重子树的时候顺便处理了即可。
天依宝宝可爱!

浙公网安备 33010602011771号