当前位置:网站首页>CCPC 2021 Weihai - G. shinyruo and KFC (combination number, tips)
CCPC 2021 Weihai - G. shinyruo and KFC (combination number, tips)
2022-07-05 20:23:00 【Dimple】
G. Shinyruo and KFC
The question
Altogether n n n Kind of food , Each food has a i a_i ai individual . The total number of food should not exceed 1 0 5 10^5 105.
Now I want to share these foods with k k k personal , Everyone can take many things , But each kind of food takes at most 1 individual .
about k k k from 1 To m m m, Output the food distribution plan separately .
Answer model 998244353 998244353 998244353.
1 ≤ m , n ≤ 5 ⋅ 1 0 4 1 \le m,n \le 5 \cdot 10^4 1≤m,n≤5⋅104
0 ≤ a i ≤ 1 0 5 , ∑ i = 1 n a i ≤ 1 0 5 0\le a_i\le 10^5,\ \sum_{i=1}^n a_i\le 10^5 0≤ai≤105, ∑i=1nai≤105
Ideas
Common to one food a i a_i ai individual , among k k k personal , Each person can get one at most , Then the distribution scheme is C ( k , a i ) C(k, ai) C(k,ai).
that n Kind of food , among k The overall personal distribution plan is : ∏ i = 1 n C ( k , a i ) \prod_{i=1}^{n} C(k, a_i) ∏i=1nC(k,ai);
Re traversal m personal , In this case, the minimum time complexity is O(n * m), Overtime .
And the title says ai The total does not exceed 1e5, that ai The number of species is 1 e 5 \sqrt {1e5} 1e5 Level , For repetition, use fast power to find power .
Preprocess the inverse element to find the combination number .
In this way, the time complexity is reduced to : O ( m n l o g n ) O(m \sqrt n \ logn) O(mn logn)
Code
#include<bits/stdc++.h>
using namespace std;
#define Ios ios::sync_with_stdio(false),cin.tie(0)
#define int long long
#define fi first
#define se second
#define endl '\n'
map<int,int> mp;
const int N = 200010, mod = 998244353;
int T, n, m;
int a[N];
struct node{
int x, cnt;
}b[N];
int fac[N], inv[N], finv[N];
int qmi(int x, int y)
{
int ans = 1;
while(y)
{
if(y & 1) ans = ans * x % mod;
x = x*x % mod;
y >>= 1;
}
return ans;
}
void init(){
fac[0]=inv[0]=inv[1]=finv[0]=finv[1]=1ll;
for(int i=1;i<N;i++)fac[i]=fac[i-1]*i%mod;
for(int i=2;i<N;i++)inv[i]=(mod-mod/i)*inv[mod%i]%mod;
for(int i=2;i<N;i++)finv[i]=finv[i-1]*inv[i]%mod;
}
inline int C(int a,int b){
if(b>a)return 0;
else return fac[a]*finv[a-b]%mod*finv[b]%mod;
}
signed main(){
Ios;
cin >> n >> m;
for(int i=1;i<=n;i++) cin >> a[i], mp[a[i]]++;
int cnt = 0;
for(auto it : mp)
{
cnt++;
b[cnt] = {
it.first, it.second};
}
init();
for(int i=1;i<=m;i++)
{
int ans = 1;
for(int j=1;j<=cnt;j++)
{
ans = ans * qmi(C(i, b[j].x), b[j].cnt) % mod;
}
cout << ans << endl;
}
return 0;
}
Experience
- If n The sum of the numbers does not exceed m, Then the number of types of these numbers is m \sqrt m m Level .
边栏推荐
- Enter the parallel world
- 2022年7月4日-2022年7月10日(ue4视频教程mysql)
- 物联网智能家居基本方法实现之经典
- Introduction to dead letter queue (two consumers, one producer)
- E. Singhal and Numbers(质因数分解)
- [quick start of Digital IC Verification] 3. Introduction to the whole process of Digital IC Design
- Go language | 01 wsl+vscode environment construction pit avoidance Guide
- [C language] three implementations of quick sorting and optimization details
- 3.3、项目评估
- Sort and projection
猜你喜欢

全国爱眼教育大会,2022第四届北京国际青少年眼健康产业展会

CTF reverse Foundation

Oracle tablespace management

鸿蒙os第四次学习

港股将迎“最牛十元店“,名创优品能借IPO突围?

618 "low key" curtain call, how can baiqiushangmei join hands with the brand to cross the "uncertain era"?

小程序事件绑定
![[Yugong series] go teaching course in July 2022 004 go code Notes](/img/18/ffbab0a251dc2b78eb09ce281c2703.png)
[Yugong series] go teaching course in July 2022 004 go code Notes

解决php无法将string转换为json的办法

走入并行的世界
随机推荐
.Net分布式事务及落地解决方案
中金财富在网上开户安全吗?
Informatics Olympiad 1338: [example 3-3] hospital setting | Luogu p1364 hospital setting
Mysql频繁操作出现锁表问题
Unity编辑器扩展 UI控件篇
c语言oj得pe,ACM入门之OJ~
C language OJ gets PE, OJ of ACM introduction~
CVPR 2022 | 常见3D损坏和数据增强
计算lnx的一种方式
July 4, 2022 - July 10, 2022 (UE4 video tutorial MySQL)
【c语言】归并排序
Notes on key vocabulary in the English original of the biography of jobs (12) [chapter ten & eleven]
死信队列入门(两个消费者,一个生产者)
sort和投影
[quick start to digital IC Verification] 8. Typical circuits in digital ICs and their corresponding Verilog description methods
How to retrieve the root password of MySQL if you forget it
[quick start of Digital IC Verification] 3. Introduction to the whole process of Digital IC Design
【数字IC验证快速入门】6、Questasim 快速上手使用(以全加器设计与验证为例)
【数字IC验证快速入门】7、验证岗位中必备的数字电路基础知识(含常见面试题)
Informatics Olympiad 1337: [example 3-2] word search tree | Luogu p5755 [noi2000] word search tree