题目大意
给定 a , b , c a,b,c a,b,c,要求字符串 S S S中有 a a a个 A A A, b b b个 B B B, c c c个 C C C,且不能出现 A B C , B C A , C A B ABC,BCA,CAB ABC,BCA,CAB,问有多少个这样的字符串,对 998244353 998244353 998244353取模
1 ≤ a , b , c ≤ 1 0 6 1\le a,b,c\le 10^6 1≤a,b,c≤106
题解
直接 d p dp dp显然没有前途,考虑容斥,钦定一个集合 S S S,使得 i ∈ S , s i s i + 1 s i + 2 i\in S,s_is_{i+1}s_{i+2} i∈S,sisi+1si+2为 A B C ABC ABC或 B C A BCA BCA或 C A B CAB CAB, s s s为字符串,对每个集合 S S S求方案数然后乘上容斥系数 ( − 1 ) ∣ S ∣ (-1)^{|S|} (−1)∣S∣就是答案,但还是不好算
注意到不合法的位置可能会连起来,变成形如 A B C A B C A B C ABCABCABC ABCABCABC这样的东西,设 f ( i ) f(i) f(i)表示连起来长度为 i i i的方案数,容易得到递推式 f ( i ) = − ( f ( i − 1 ) + f ( i − 2 ) ) f(i)=-(f(i-1)+f(i-2)) f(i)=−(f(i−1)+f(i−2)),归纳得到 f ( 3 i ) = − 1 , f ( 3 i + 1 ) = 1 , f ( 3 i + 2 ) = 0 f(3i)=-1,f(3i+1)=1,f(3i+2)=0 f(3i)=