按开题顺序写 \(BCDEFGHIJKLA(D?)\),\(M\) 送的不写
B
首先发现铜铁本质等价(铜铁的转换不影响 \(val\) ),所以考虑枚举最后金和银的数量 \(gold, silver\),那么约束条件为:
\[val=n-4g-s\ge p\]
\[8g+4s\le n\]
那么考虑剩余铁牌全合成同和全不合成情况,每合成一个铜牌那么总牌数减一,即 \(g, s\) 对 \(i\in[g+s+\left \lfloor \frac{(n-8g-4s+1)}{2} \right \rfloor, g+s+(n-8g-4s)]\) 的 \(ans_{i}\) 有 1 的贡献。
拆开下取整得 \([\left \lfloor \frac{(n+1)}{2} \right \rfloor-3g-s, n-7g-3s]\)
我们枚举 \(g\) 时,需要加的区间 \([l, r]\) 随着 \(s\) 的变化,左右端点分别为公差为 1/3 的等差数列。
将区间 +1 操作变为差分,那么对于某个 \(g\) 上述区间的贡献可以相当于一个等差数列下标组 +1,另一个等差数列下标组 -1,二阶差分数组可以解决。
关键代码:
[code] for(int i=0, x, s0; i |