当前位置:网站首页>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 .
边栏推荐
- .Net分布式事务及落地解决方案
- E. Singhal and Numbers(质因数分解)
- C langue OJ obtenir PE, ACM démarrer OJ
- 【c语言】归并排序
- 死信队列入门(两个消费者,一个生产者)
- [quick start to digital IC Verification] 8. Typical circuits in digital ICs and their corresponding Verilog description methods
- 小程序事件绑定
- sun. misc. Base64encoder error reporting solution [easy to understand]
- What is PyC file
- MySql的root密码忘记该怎么找回
猜你喜欢
JS implementation prohibits web page zooming (ctrl+ mouse, +, - zooming effective pro test)
Leetcode brush question: binary tree 14 (sum of left leaves)
小程序事件绑定
How to select the Block Editor? Impression notes verse, notation, flowus
Leetcode skimming: binary tree 10 (number of nodes of a complete binary tree)
Rainbow 5.7.1 supports docking with multiple public clouds and clusters for abnormal alarms
Leetcode skimming: binary tree 12 (all paths of binary tree)
A way to calculate LNX
Wechat applet regular expression extraction link
如何形成规范的接口文档
随机推荐
js实现禁止网页缩放(Ctrl+鼠标、+、-缩放有效亲测)
小程序全局配置
ICTCLAS word Lucene 4.9 binding
[quick start of Digital IC Verification] 1. Talk about Digital IC Verification, understand the contents of the column, and clarify the learning objectives
leetcode刷题:二叉树12(二叉树的所有路径)
Schema和Model
Elk distributed log analysis system deployment (Huawei cloud)
Leetcode brush questions: binary tree 18 (largest binary tree)
C language OJ gets PE, OJ of ACM introduction~
计算lnx的一种方式
解决php无法将string转换为json的办法
DP:树DP
[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
Hong Kong stocks will welcome the "best ten yuan store". Can famous creative products break through through the IPO?
1、强化学习基础知识点
Mongodb/ document operation
Mongodb basic exercises
. Net distributed transaction and landing solution
JS implementation prohibits web page zooming (ctrl+ mouse, +, - zooming effective pro test)