MX 练石 2025 NOIP #6

简单场。


2025 --【炼石计划 NOIP】-- 第六套

链接:link
题解:link

时间: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 重子树的时候顺便处理了即可。


天依宝宝可爱!

posted @ 2025-09-15 14:30  little__bug  阅读(52)  评论(0)    收藏  举报