题解: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)\)。

浙公网安备 33010602011771号