当前位置:网站首页>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 .
边栏推荐
- Practical demonstration: how can the production research team efficiently build the requirements workflow?
- CVPR 2022 | 常见3D损坏和数据增强
- [quick start of Digital IC Verification] 1. Talk about Digital IC Verification, understand the contents of the column, and clarify the learning objectives
- [Yugong series] go teaching course in July 2022 004 go code Notes
- Informatics Olympiad 1337: [example 3-2] word search tree | Luogu p5755 [noi2000] word search tree
- Guidelines for application of Shenzhen green and low carbon industry support plan in 2023
- Leetcode brush question: binary tree 14 (sum of left leaves)
- Sort and projection
- Oracle-表空间管理
- 信息学奥赛一本通 1339:【例3-4】求后序遍历 | 洛谷 P1827 [USACO3.4] 美国血统 American Heritage
猜你喜欢
鸿蒙系统控制LED的实现方法之经典
【愚公系列】2022年7月 Go教学课程 004-Go代码注释
618 "low key" curtain call, how can baiqiushangmei join hands with the brand to cross the "uncertain era"?
Oracle-表空间管理
Informatics Orsay all in one 1339: [example 3-4] find the post order traversal | Valley p1827 [usaco3.4] American Heritage
1、强化学习基础知识点
Scala basics [HelloWorld code parsing, variables and identifiers]
欢迎来战,赢取丰厚奖金:Code Golf 代码高尔夫挑战赛正式启动
Leetcode brush questions: binary tree 11 (balanced binary tree)
【数字IC验证快速入门】7、验证岗位中必备的数字电路基础知识(含常见面试题)
随机推荐
Model method
本季度干货导航 | 2022年Q2
Notes on key vocabulary in the English original of the biography of jobs (12) [chapter ten & eleven]
Elk distributed log analysis system deployment (Huawei cloud)
计算lnx的一种方式
Unity编辑器扩展 UI控件篇
Leetcode brush question: binary tree 14 (sum of left leaves)
Go language | 03 array, pointer, slice usage
3.3、项目评估
小程序全局配置
19 mongoose modularization
E. Singhal and Numbers(质因数分解)
1、强化学习基础知识点
Is it safe for CICC fortune to open an account online?
Wechat applet regular expression extraction link
1. Strengthen learning basic knowledge points
sun. misc. Base64encoder error reporting solution [easy to understand]
Minimum commission for stock trading account opening, where to open an account with low commission? Is it safe to open an account on your mobile phone
BZOJ 3747 POI2015 Kinoman 段树
【c语言】归并排序