zoukankan      html  css  js  c++  java
  • Codeforces 757 C Felicity is Coming!

    题目大意:有n个训练营,m种宠物,每个训练营里里面有gi 个宠物,现在每只宠物都要完成一次进化,种类

    相同的宠物进化之后,种类还是相同,种类不同的宠物不能进化成相同种类,且要求所有宠物进化之后,每个

    训练营各个种类的宠物数量不变。

    思维题

    思路:我们不能一个一个训练营考虑,我们要考虑不同种类宠物的情况,我们统计每种宠物出现在那个训练营

    里面且出现几次,统计结果完全一样的宠物种类分为一堆,这一堆里面的宠物如果有x个,则这堆的贡献为x!

    将所有堆得结果想乘就是结果。

    原来将vector<int> vec[ N ] 排序,sort(vec,vec+N),是每个按字典序排序,学到了。

    #include<bits/stdc++.h>
    #define ll long long
    using namespace std;
    const int N=1e6+5;
    const ll mod=1e9+7;
    int n,m;
    ll f[N];
    vector<int> cnt[N];
    int main()
    {
        cin>>n>>m;
        f[0]=1;
        for(ll i=1;i<=m;i++) f[i]=(f[i-1]*i)%mod;
        for(int i=1;i<=n;i++)
        {
            int g; scanf("%d",&g);
            while(g--)
            {
                int w; scanf("%d",&w);
                cnt[w].push_back(i);
            }
        }
        sort(cnt+1,cnt+1+m);
        int c=1;
        ll ans=1;
        for(int i=2;i<=m;i++)
        {
            if(cnt[i]==cnt[i-1])
            {
                c++;
                if(i==m) ans=(ans*f[c])%mod;
            }
            else
            {
                ans=(ans*f[c])%mod;
                c=1;
            }
        }
        cout<<ans<<endl;
        return 0;
    }
    View Code
  • 相关阅读:
    在Ubuntu下编译FFmpeg
    AirSim
    上海高分无人机大赛
    飞机维修流程
    心灵感应灯三 服务器端
    Kmeans基本思想
    小觅双目相机测试
    ORB SLAM2在Ubuntu 16.04上的运行配置
    Moleskine智能笔+专用本:写完随时传到手机
    机器学习培训
  • 原文地址:https://www.cnblogs.com/CJLHY/p/7381667.html
Copyright © 2011-2022 走看看