zoukankan      html  css  js  c++  java
  • Codeforces Global Round 7 C. Permutation Partitions(组合数学)

    题意:

    给你 n 长全排列的一种情况,将其分为 k 份,取每份中的最大值相加,输出和的最大值和有多少种分法等于最大值。

    思路:

    取前 k 大值,储存下标,每两个 k 大值间有 vi+1 - vi 种分法,相乘即可。

    #include <bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const ll mod=998244353;
    int main()
    {
        int n,k;cin>>n>>k;
        int p[n];for(int &i:p) cin>>i;
        ll sum=0;
        vector<int> v;
        for(int i=0;i<n;i++)
            if(p[i]>n-k){
                sum+=p[i];
                v.push_back(i);
            }
        ll ans=1;
        for(int i=0;i<int(v.size())-1;i++)
            ans=ans*(v[i+1]-v[i])%mod;
        cout<<sum<<' '<<ans<<"
    ";
        return 0;
    }
  • 相关阅读:
    常见模块和包
    二分查找算法
    常见内置函数
    Django总目录
    nginx配置站点
    Arduino语言
    Python连接Arduino的方法
    机器人学习
    Redis
    arduino总目录
  • 原文地址:https://www.cnblogs.com/Kanoon/p/12528965.html
Copyright © 2011-2022 走看看