题解:P13090 [FJCPC 2025] XCPC

题目本质是在满足 \(4a_1+3a_2+2a_3+a_4\ge p\) 的前提下,统计满足 \(8a_1+4a_2+2a_3+a_4=n\)、且牌数 \(a_1+a_2+a_3+a_4=i\) 的四元组个数。因为 \(a_3,a_4\) 的系数都比 \(a_2\) 小,一旦固定 \(a_1\)\(a_2\),亮度约束可化为 \(4a_1+a_2\le n-p\)。设 \(r=n-8a_1-4a_2\) 表示剩余铁单位,它必为偶数;把其中 \(2a_3\) 单位炼成铜后剩下 \(a_4\) 单位直接留下做铁,于是牌数区间为 \(L=a_1+a_2+\lceil r/2\rceil\)\(R=a_1+a_2+r\)

随着 \(a_2\) 递增,\(L\) 每次减少 \(1\)\(R\) 每次减少 \(3\),呈现等差结构。对固定 \(a_1\),所有合法 \(a_2\) 贡献的一批区间在差分数组里可一次性写入:左端是一段连续区间,用普通差分加;右端各端点落在同一模 \(3\) 的等差序列上,可将差分拆成三条模 \(3\) 链,用三条数组 \(d_0,d_1,d_2\) 再做一次差分即可。这样外层只需遍历 \(a_1\)。求完三条链的前缀和后把结果灌回主差分,再做一次前缀和即得每个 \(i\) 的答案。

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

link

posted @ 2025-07-10 14:21  薛儒浩  阅读(47)  评论(0)    收藏  举报