E. Assimilation IV —— Educational Codeforces Round 109 (Rated for Div. 2)

E. Assimilation IV

题目链接

题目大意

给定\(n\)个城市到\(m\)的纪念碑的距离,要求进行\(n\)轮操作,第\(i\)轮操作随机选择一个城市(保证不能选择重复的城市),可以控制距离此城市不超过\(i\)的纪念碑,输出能控制的在所有选择情况中能控制纪念碑的数量的期望。

解题思路

我们考虑对每个纪念碑分开计算答案,对于每一个纪念碑,计算能覆盖它的所有城市是十分困难的,我们可以考虑计算一定不覆盖该纪念碑的情况数量,再用总数量(\(n!\))减去即可。
对于每一个纪念碑,首先将所有城市到纪念碑的距离排序,即\(dis[1],dis[2],\cdots,dis[n]\)
对于第\(1\)个城市,\(dis[1]\)需要在\(1 -- (dis[1] - 1)\)的次序中,即有\((dis[1] - 1)\)种情况,
对于第\(2\)个城市,\(dis[2]\)需要在\(1 -- (dis[2] - 1)\)的次序中,即有\((dis[2] - 2)\)中情况,
\(\cdots\)

所以利用乘法原理计算每个纪念碑的不被覆盖的种数,再用\(n!\)减去即可得到每个纪念碑的贡献,最后输出贡献除以总数量即可。

Code

#include <bits/stdc++.h>
#define ll long long
#define qc ios::sync_with_stdio(false); cin.tie(0);cout.tie(0)
#define fi first
#define se second
#define PII pair<int, int>
#define PLL pair<ll, ll>
#define pb push_back
#define V vector
using namespace std;
const int N = 2e5 + 7;
const int inf = 0x3f3f3f3f;
const ll INF = 0x3f3f3f3f3f3f3f3f;
const ll mod = 998244353;
inline int read()
{
    int x=0,f=1;char ch=getchar();
    while (!isdigit(ch)){if (ch=='-') f=-1;ch=getchar();}
    while (isdigit(ch)){x=x*10+ch-48;ch=getchar();}
    return x*f;
}

int n,m;
ll f[N][27];
ll ksm(ll x,ll y){
    ll p = 1;
    while(y){
        if(y&1) p= p *x % mod;
        x = x * x % mod;
        y >>=1;
    }
    return p;
}
void solve(){
    scanf("%d%d",&n,&m);
    ll sum = 1;
    for(int i = 1; i <= n; i++){
        sum = sum * i % mod;
        for(int j = 1; j <= m; j++)
            scanf("%lld",&f[j][i]);
    }
    ll ans = 0;
    for(int j = 1; j <= m; j++){
        sort(f[j] + 1, f[j] + n + 1);
        ll tmp = 1;
        for(int i = 1; i <= n; i++)
        {
            tmp = tmp * max(0ll, f[j][i] - i) % mod;
        }
        tmp = (sum - tmp + mod) % mod;
        ans = (ans + tmp) % mod;
    }
    printf("%lld\n",ans * ksm(sum, mod-2) % mod);
}

int main()
{
#ifdef ONLINE_JUDGE
#else
    freopen("in.txt", "r", stdin);
    freopen("out.txt", "w", stdout);
#endif

    int T = 1;
    //scanf("%d",&T);
    while(T--){
        solve();
    }
    return 0;
}

posted @ 2021-10-17 13:58  !^^!  阅读(46)  评论(0编辑  收藏  举报