数学考试

思路:
fx表示1-x的排列对于前(pi<x)的限制都满足,但是不满足x的限制条件的个数。fx初始为n!现在要去掉不合法的,为了避免重复计算,应该减去所有pi的贡献,即fpi(n-pi)!。
*
代码:**

#include<bits/stdc++.h>
#define int long long
using namespace std;

signed main() {
    ios::sync_with_stdio(false);
    cin.tie(0);
    const int mod = 20000311;
    int n, m;
    cin >> n >> m;
    vector<int> a(m + 10);
    for(int i = 1; i <= m; i++) {
        cin >> a[i];
    }
    sort(a.begin()+1, a.begin() + m + 1);
    a[m + 1] = n;
    vector<int> fac(n+10);
    fac[0] = 1;
    for(int i = 1; i <= n; i++) {
        fac[i] = (fac[i-1] * i) % mod;
    }
    vector<int> dp(n+10);    
    for(int i = 1; i <= m + 1; i++) {
        dp[i] = fac[a[i]];
        for(int j = 1; j < i; j++) {
            dp[i] = (dp[i] - dp[j] * fac[a[i] - a[j]] % mod + mod) % mod;
        }
    }
    cout << dp[m + 1] << endl;
    return 0;
}
全部评论

相关推荐

🎓学历背景:双非土木硕👨‍💻意向职位:AI应用开发大佬们可以帮我看看简历吗,秋招至今0offer
秋招结束再玩瓦:今年科班都不好找哇……你可以试试交叉岗,比如制造业国企的一些开发算法,或者互联网的边缘岗,it技术支持,运维这些
我的简历长这样
点赞 评论 收藏
分享
10-28 10:48
已编辑
门头沟学院 Java
孩子我想要offer:发笔试后还没笔试把我挂了,然后邮箱一直让我测评没测,后面不知道干嘛又给我捞起来下轮笔试,做完测评笔试又挂了😅
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务