Atcoder abc235
https://atcoder.jp/contests/abc235/tasks
G - Gardens
A个种子1
B个种子2
C个种子3
N个花园
要满足条件, 任何花园都有种种子
每个花园每种的个数[0,1]
不需要把所有都种植
求方案数mod 998244353
范围
n 5e6
3s
1024mb
我的思路
R(i,j) 表示,i个花园,种完其中j个花园的方案数
T(n) 表示,n个花园,恰好种满这n个花园的方案数, T(n) = R(n,n)
ans = T(n)
S(n) = R(n,n) + R(n,n-1) + R(n,n-2) + … + R(n,0);
S(n) = R(n,n) * binom(n,n) + R(n-1,n-1) * binom(n,n-1) + .. + R(0,0) * binom(n,0)
S(n) = T(n) * binom(n,n) + T(n-1) * binom(n,n-1) + .. + T(0) * binom(n,0)
S(n) 很容易算, 相当于A,B,C互不影响, = prod (sum binom(n,0..X)), X=A,B,C, 问题是这个依赖于n需要O(n),
如果能反过来得到T(n) 就好了
T(n) = S(n) - (T(n-1) * binom(n,n-1) + … + T(0) * binom(n,0))
T(n)/n! = S(n)/n! - sum T(i)/i!/(n-i)!
考虑花园状态只有2^3-1=7 种,那么就是 七种中,总个数小于a,b,c的
生成方程?
$\sum \lbrack pwr_x\le a,pwr_y\le b,pwr_z\le c \rbrack ((1+x)(1+y)(1+z)-1)^n$
$= \sum_{i\in[0, n],i_x\le a,,i_y\le b,i_z\le c} (-1)^{n-i} \binom{n}{i} \binom{i}{i_x}\binom{i}{i_y}\binom{i}{i_z} $
$= \sum_{i\in[0, n],i_x\le a,,i_y\le b,i_z\le c} (-1)^{n-i} \binom{n}{i} \binom{i}{min(i,i_x)}\binom{i}{min(i,i_y)}\binom{i}{min(i,i_z)} $
并没法算
再就是, 假设 a<=b<=c
ans(a,b,c) 通过 ans(b,b,b) 让每次头-1,或者尾+1,多次得到
去考虑之间的变化