CF451E Devu and Flowers
链接:https://www.luogu.com.cn/problem/CF451E
题目描述:将一些球丢进一个盒子里,每一个求有一种颜色,有多少种本质不同的方法
题解:可知该题的模型是多重集的组合数,由于该题不满足,则我们需要容斥,每一次容斥有个不符合要求的选法,则每一次的贡献为
#include<iostream>
#include<cstdio>
#define mod 1000000007
using namespace std;
long long ans,n,k,f[22],res,mul=1;
long long fast_pow(long long a,int b)
{
if (b==0)
return 1;
if (b&1)
return fast_pow(a*a%mod,b/2)*a%mod;
else
return fast_pow(a*a%mod,b/2);
}
long long C(long long b)
{
res=mul;
for (long long i=b-(n-1)+1;i<=b;++i)
res=(res*(i%mod))%mod;
return res;
}
void dfs(int x,int r,long long sum)
{
if (sum<n-1)
return;
if (x==n+1)
{
if (r%2==1)
ans=(ans+C(sum))%mod;
else
ans=(ans-C(sum))%mod;
return;
}
for (int i=x+1;i<=n+1;++i)
dfs(i,r+1,sum-f[i]-1);
return;
}
int main()
{
scanf("%lld%lld",&n,&k);
for (int i=1;i<=n;++i)
scanf("%lld",&f[i]);
for (long long i=1;i<=n-1;++i)
mul=(mul*fast_pow(i%mod,mod-2))%mod;
dfs(0,0,n+k);
printf("%lld\n",(ans+mod)%mod);
return 0;
}
本文来自博客园,作者:zhouhuanyi,转载请注明原文链接:https://www.cnblogs.com/zhouhuanyi/p/16983589.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】