欢迎光临散文网 会员登陆 & 注册

CF竞赛题目讲解_CF1740F(组合数学 + DP + 滚动数组)

2022-11-02 16:44 作者:Clayton_Zhou  | 我要投稿

AC代码

https://codeforces.com/contest/1740/submission/178776936

https://codeforces.com/contest/1740/submission/178913917

题意:

给Pak Chanek一个n个整数的数组a。对于每个i(1≤i≤n) ,Pak Chanek将在白板上写一个元素集{ai}。

之后,在一次操作中,Pak Chanek可能会执行以下操作:

1. 在白板上选择两个不同的S和T, S∩T =∅ (S和T没有任何共同的元素)。

2. 从白板上擦除S和T并在白板上写下S∪T(S和T的结合)。


执行零次或多次操作后,Pak Chanek将构造一个集合M,其中包含写在白板上的所有集合的大小。

换句话说,M中的每个元素对应于操作之后的某一个集合的大小。

求不同集合M的数量 模998244353。


题解:

组合数学 + DP + 滚动数组


dp[j][i][left]: 划分i 个集合时,最后一个集合用掉的元素个数不小于j,且剩余元素个数为left



dp[j][i+1][mx-j] 为下列状态的个数: 

划分i+1个集合,最后一个集合用掉的元素个数为j,且剩余元素个数为mx-j


集合的大小非递增,第i+1个集合最多可用元素个数mx=dat[i]+left


CF竞赛题目讲解_CF1740F(组合数学 + DP + 滚动数组)的评论 (共 条)

分享到微博请遵守国家法律