首页 > 其他分享 >「ABC215G」 Colorful Candies 2

「ABC215G」 Colorful Candies 2

时间:2024-02-23 20:45:50浏览次数:20  
标签:ABC215G cnt 50005 Colorful Candies res ll vis mod

题意概括

有 \(n\) 个糖果,每种都有一个颜色 \(c_i\),求对于所有 \(k\in [1,n]\),求出 \(C_n^k\) 种方案中糖果种类的期望数, \(998244353\) 取模

分析

通过期望的定义,设 \(vis_i\) 表示每种颜色有没有被选,颜色总数为 \(m\),则期望为 \(E(\sum\limits_{j=1}^{m}vis_j)\),由线性期望的性质,\(E(\sum\limits_{j=1}^{m}vis_j)=\sum\limits_{j=1}^{m}E(vis_j)\)。

因为一个颜色的期望为:出现的方案数/总方案数=(总方案数-未出现的方案数)/总方案数,设每种颜色的总数为 \(cnt_j\),所以 \(E(vis_j)=\frac{C_{n}^{k}-C_{n-cnt_j}^{k}}{C_n^k}\)。

可以把 \(c\) 数组离散化,再计算 \(cnt\),因为 \(\sum\limits_{i=1}^{m}cnt_i=n\),可把式子转化成 \(m_{max}(m_{max}+1)=2n\),所以 \(m\) 严格小于 \(\sqrt n\),总时间复杂度在 \(O(n\sqrt n)\) 级别。

因为空间足够,且调用次数较多,预处理出 \(1\sim n\) 的阶乘和逆元,用于 \(O(1)\) 求解组合数。

Code

#include<bits/stdc++.h>
typedef long long ll;
using namespace std;
const ll mod=998244353;
ll n,m,c[50005],b[50005],col[50005],cnt[50005],jc[50005],inv[50005];
inline ll qpow(ll a,ll b){
    ll res=1;
    while(b){
        if(b&1)res=res*a%mod;
        a=a*a%mod,b>>=1;
    }
    return res;
}
inline void init(ll x){
    jc[0]=1;
    for(ll i=1;i<=x;++i){
        jc[i]=jc[i-1]*i%mod;
    }
    inv[x]=qpow(jc[x],mod-2);
    for(ll i=x-1;i>=0;--i)inv[i]=inv[i+1]*(i+1)%mod;
}
inline ll C(ll n,ll m){
    if(m<0||n<m)return 0;
    return jc[n]*inv[n-m]%mod*inv[m]%mod;
}
map<ll,ll>mp1,mp2;
signed main(){
    cin>>n,init(n);
    for(ll i=1;i<=n;++i)cin>>c[i],mp1[c[i]]++;
    for(auto i:mp1)mp2[i.second]++;
    for(auto i:mp2)c[++m]=i.first,cnt[m]=i.second;
    for(ll i=1;i<=n;++i){
        ll ans=0;
        for(ll j=1;j<=m;++j){
            ans=(ans+(C(n,i)-C(n-c[j],i)+mod)%mod*cnt[j]%mod)%mod;
        }
        ans=ans*qpow(C(n,i),mod-2)%mod;
        cout<<ans<<'\n';
    }
    return 0;
}

标签:ABC215G,cnt,50005,Colorful,Candies,res,ll,vis,mod
From: https://www.cnblogs.com/run-away/p/18030331

相关文章

  • [LeetCode] 1578. Minimum Time to Make Rope Colorful
    Alicehasnballoonsarrangedonarope.Youaregivena0-indexedstringcolorswherecolors[i]isthecoloroftheithballoon.Alicewantstheropetobecolorful.Shedoesnotwanttwoconsecutiveballoonstobeofthesamecolor,sosheasksBobfor......
  • CF1898 C Colorful Grid 题解
    LinkCF1898CColorfulGridQuestion给出一个\(N\timesM\)的网格图给每一条边染色(R/B),需要存在一条长度为\(K\)的路径从\((1,1)\)到\((N,M)\),路径允许重复通过一个节点。Solution非常有意思的一道题先考虑\(K\)满足的最小值,显然是\((N-1)+(M-1)\),假设走上->......
  • C. Colorful Table
    C.ColorfulTable设p1为最左边的a[p1]>=i,p2为最右边的a[p2]>=i,则i的面积大小为行的p1-p2,列的p1-p2,大小为2*(p2-p1+1)但是如果暴力的去求每个点的左右端点,肯定会超时,有没有办法优化呢?1.我们想到,大的数一定包含小的数:如果大的数算出来了,那么比他小的数一定也满足条件,可以递推2.......
  • AGC004B Colorful Slimes
    ${\scr\color{Orchid}{\text{生于尘埃,溺于人海,死于理想高台。}}}$题目链接:ColorfulSlimes${\scr\color{Cyan}{\text{Solution}}}$分析思路:挺神奇的$dp$一个比较显然的结论:最小值的方案中第$2$种操作最多用$n-1$次证明大概就是一个数用$n-1$次一定会变成另一个数......
  • [CF1178 F2] Long Colorful Strip
    F2-LongColorfulStrip很牛的题!首先,我们可以将颜色相同的一段区间缩成一个点,那么每次加入一个新的颜色时,最多只能将其所覆盖的那个颜色所属的区间分成三部分(原本:00000000,加入1后\(\rightarrow\)0001111000),也就是增加了两个点,那么也就意味着最终所成的点的个数最多只有\(2*n......
  • Codeforces Round 636 (Div. 3) A. Candies
    \(vv\)有\(n\)个糖果,\(vv\)记得这些糖果是按如下方式购买的:第\(i\)天买了\(2^{i-1}x\)个,总共买了\(k\)天,\(k>1\)。但是\(vv\)忘了\(x\)是多少,询问任意一个满足条件的\(x\)。保证给出的\(n\)存在这样一个\(x\)。显然,根据几何或二进制证明,有\(\sum_{......
  • CF506D Mr. Kitayuta's Colorful Graph
    好久没更新这个单题系列了,主要是最近没啥CF比赛空闲时间又少,今天忙里偷闲写了两个题这个题就比较典了,两点是否连通一般都是想到并查集维护,现在的问题是要对每种颜色的边把贡献算清楚很容易想到枚举所有颜色的边,每次求出所有连通分量后遍历一遍询问统计答案,这样正确性显然但复杂......
  • 题解 CF1787G【Colorful Tree Again】
    problem贼眉鼠眼有一棵\(N\)个节点的树,这棵树很特殊,每条边都有边权和颜色。果宝特攻会不定时来进攻贼眉鼠眼。具体地,在前\(Q\)个时刻,在每个时刻,会发生以下两个事件之一:果宝特攻摧毁了树上的一个节点\(u\)。贼眉鼠眼修复了树上的一个节点\(u\)。定义一条简单路径......
  • P9572 Colorful Days♪
    思路Step0.骗分显然,题目中的\(c_1,c_2\)就是为了送分,如果比赛中没有思路,倒是可以直接输出两个\(0\)先得到\(2\)分,聊胜于无。Step1.暴力不出奇迹显然第一个想到的是暴力,枚举\(k\),容易观察得出,若一次增加\(k\)而LCS不变,则再增加\(k\)也无用。可凭借这个结论暴力验......
  • [刷题笔记] [【LGR-155-Div.3】T4] Luogu P9572 「NnOI R2-T4」Colorful Days♪
    ProblemDescription有两个数组\(A,B\),我们可以将\(A\)数组无限次重复拼接。求最少需要多少次拼接使得拼接后的\(A,B\)的最长公共子序列最大。Analysis我们要学会从题目中找到一些信息,比如说本题的数据范围:对于\(100\%\)的数据,保证\(1\leqn,m,S_i,T_i\le10^6\),\(......