CF383E Vowels 子集DP 容斥

2022-06-13 20:54:08 字數 441 閱讀 9343

戳這裡

首先很容易想到列舉母音字符集然後統計答案,至於統計答案可以採用容斥的方式得到,但是列舉母音字符集的子集複雜度是 \(o(3^)\) 的複雜度不對,我們發現這樣列舉的情況下許多狀態其實是無用的,壓根不會出現的,所以我們考慮列舉每乙個單詞的子集來容斥,得到母音恰好為 \(x\) 的時候有多少個單詞恰好包含這個字符集,最後再把每乙個子集的答案加到子集身上,複雜度 \(o(n*2^3+2^\times 24)\)

#includeusing namespace std;

namespace zzc

}for(int i=0;i<24;i++)

}for(int i=0;i<(1<<24);i++) ans^=(f[i]*f[i]);

printf("%d\n",ans);

}}int main()