• 51nod1269Devu and Flowers


    题解:

    如果没有限制每一种花有多少,那么就是简单的排列组合问题。

    那么我们强制让一些花一定都要选。

    暴力搜索,然后组合数(逆元)

    采用容斥原理来计算最后的答案

    代码:

    #include<bits/stdc++.h>
    using namespace std;
    const int M=1e9+7;
    typedef long long ll;
    ll i,j,k,l,t,n,m,ans,a[27],er[27],bz,sum;
    ll ksm(ll x,ll y)
    {
        ll z=1;
        for(;y;y/=2,(x*=x)%=M)
         if(y&1)(z*=x)%=M;
        return z;
    }
    ll js(ll x,ll y)
    {
        if(x<y)return 0;
        ll a=1,b=1,i;
        if(y<x-y)y=x-y;
        for (int i=y+1;i<=x;i++)a=a*i%M;
        for (int i=2;i<=x-y;i++)b=b*i%M;
        return a*ksm(b,M-2)%M;
    }
    ll c(ll x,ll y)
    {
        if(!y)return 1;
        return c(x/M,y/M)*js(x%M,y%M)%M;
    }
    int main()
    {
        scanf("%lld%lld",&n,&m);
        for (int i=1;i<=n;i++)scanf("%lld",&a[i]);
        for (int i=0;i<(1<<n);i++)
         {
            bz=1;sum=m;
            for (int j=1;j<=n;j++)
             if(i&(1<<(j-1)))
                {
                bz*=-1;
                sum-=a[j]+1;
              }
            if(sum<0)continue;
            (ans+=bz*c(n+sum-1,n-1))%=M;
         }
        ans=(ans+M)%M;
        printf("%lld
    ",ans);
    }
  • 相关阅读:
    hdu 4948 Kingdom(推论)
    codeforces 407 div1 A题(Functions again)
    Atcoder regular Contest 073(C
    Atcoder regular Contest 073(D
    Nginx阅读笔记(二)之location的用法
    Nginx阅读笔记
    django virtualenv
    Supervisor
    捕捉攻击者
    django user模块改写
  • 原文地址:https://www.cnblogs.com/xuanyiming/p/7511773.html
Copyright © 2020-2023  润新知