正解:容斥+$Lucas$定理+组合数学

解题报告:

传送门!

先$mk$个我不会的母函数的做法,,,

首先这个题的母函数是不难想到的,,,就$\left (  1+x_{1}^{1}+x_{1}^{2}+...+x_{1}^{f_{1}}\right )\cdot\left (  1+x_{2}^{1}+x_{2}^{2}+...+x_{2}^{f_{2}}\right )\cdot...\cdot\left (  1+x_{n}^{1}+x_{n}^{2}+...+x_{n}^{f_{n}}\right )$

显然$ans$就$x^{s}$的系数

但是因为$f[i]$和$s$挺大的,,,所以这个方法就$GG$了,,,似乎$luogu$有个题解写的这个但我也麻油系统地学过母函数就先咕辽,$just$先$mk$下思路QAQ

下面港下我会滴解法趴$QAQ$

考虑这种求合法方案的,自然而然就应该想到总数-不合法方案嘛

首先总数就相当于不考虑$f[i]$的限制,于是$ans=\binom{s+n-1}{s}$,不解释,就可重集合组合数公式罢辽

然后对于不合法的,显然就枚举有几个$f[i]$被爆了,容斥一下就好,感觉好像之前做过一道类似的题目鸭,太套路了不解释,,,

然后记得套个$Lucas$,因为实在太基操了就只顺口一提辽没什么可细港的$QAQ$

(upd:,,,我发现真的做过,,,$dbq$我忘了,,,王之财宝,只是数据范围小一下,,,$maya$我真的服了自己了,,,做过的题居然能忘,,,我枯了$gql$真是太辣鸡了,,,

#include<bits/stdc++.h>
using namespace std;
#define il inline
#define gc getchar()
#define t(i) edge[i].to
#define int long long
#define ri register int
#define rb register bool
#define rc register char
#define rp(i,x,y) for(ri i=x;i<=y;++i)
#define my(i,x,y) for(ri i=x;i>=y;--i)
#define e(i,x) for(ri i=head[x];i;i=edge[i].nxt) const int N=+,mod=;
int tot,poww[N]={},n,s,f[N],as; il int read()
{
rc ch=gc;ri x=;rb y=;
while(ch!='-' && (ch>'' || ch<''))ch=gc;
if(ch=='-')ch=gc,y=;
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=gc;
return y?x:-x;
}
il int power(ri x,ri y){ri ret=;while(y){if(y&)ret=1ll*ret*x%mod;x=1ll*x*x%mod;y>>=;}return ret;}
il int C(ri x,ri y)
{
if(x<y)return ;y=min(y,x-y);ri multi=,inv=;
rp(i,,y)multi=1ll*multi*(x-i+)%mod,inv=1ll*inv*i%mod;
return 1ll*multi%mod*power(inv,mod-)%mod;
}
int lucas(ri x,ri y){if(x<=mod)return C(x,y);return 1ll*C(x%mod,y%mod)*lucas(x/mod,y/mod)%mod;}
il void cal(ri zt)
{
ri del=,cnt=s;
rp(i,,n-)if(zt&(poww[i]))del=-del,cnt-=f[i+]+;
if(cnt<)return;
as=(as+1ll*lucas(cnt+n-,n-)*del%mod+mod)%mod;
} signed main()
{
// freopen("451e.in","r",stdin);freopen("451e.out","w",stdout);
n=read();s=read();rp(i,,n)f[i]=read(),poww[i]=poww[i-]<<;
rp(i,,poww[n]-)cal(i);printf("%lld\n",as);
return ;
}

放下代码趴$QAQ$

CF451E Devu and Flowers 数论的更多相关文章

  1. CF451E Devu and Flowers 解题报告

    CF451E Devu and Flowers 题意: \(Devu\)有\(N\)个盒子,第\(i\)个盒子中有\(c_i\)枝花.同一个盒子内的花颜色相同,不同盒子的花颜色不同.\(Devu\)要 ...

  2. CF451E Devu and Flowers(容斥)

    CF451E Devu and Flowers(容斥) 题目大意 \(n\)种花每种\(f_i\)个,求选出\(s\)朵花的方案.不一定每种花都要选到. \(n\le 20\) 解法 利用可重组合的公 ...

  3. CF451E Devu and Flowers (隔板法 容斥原理 Lucas定理 求逆元)

    Codeforces Round #258 (Div. 2) Devu and Flowers E. Devu and Flowers time limit per test 4 seconds me ...

  4. BZOJ1101 [POI2007]Zap 和 CF451E Devu and Flowers

    Zap FGD正在破解一段密码,他需要回答很多类似的问题:对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a,y<=b,并且gcd(x,y)=d.作为FGD的同学,FGD希望得到 ...

  5. CF451E Devu and Flowers(组合数)

    题目描述 Devu想用花去装饰他的花园,他已经购买了n个箱子,第i个箱子有fi朵花,在同一个的箱子里的所有花是同种颜色的(所以它们没有任何其他特征).另外,不存在两个箱子中的花是相同颜色的. 现在De ...

  6. CF451E Devu and Flowers

    多重集求组合数,注意到\(n = 20\)所以可以用\(2 ^ n * n\)的容斥来写. 如果没有限制那么答案就是\(C(n + s - 1, n - 1)\).对每一个限制依次考虑,加上有一种选多 ...

  7. Luogu CF451E Devu and Flowers 题解报告

    题目传送门 [题目大意] 有n种颜色的花,第i种颜色的花有a[i]朵,从这些花中选m朵出来,问有多少种方案?答案对109+7取模 [思路分析] 这是一个多重集的组合数问题,答案就是:$$C_{n+m- ...

  8. CF451E Devu and Flowers (组合数学+容斥)

    题目大意:给你$n$个箱子,每个箱子里有$a_{i}$个花,你最多取$s$个花,求所有取花的方案,$n<=20$,$s<=1e14$,$a_{i}<=1e12$ 容斥入门题目 把取花 ...

  9. [题解] [CF451E] Devu and Flowers

    题面 题解 就是一个求\(\sum_{i= 1}^{n}x _ i = m\)的不重复多重集的个数, 我们可以由容斥原理得到: \[ ans = C_{n + m - 1}^{n - 1} - \su ...

随机推荐

  1. Fatal error: cannot initialize AIO sub-system

    在一台服务器中以各数据库的备份文件为数据文件启动多个MySQL实例供SQL Review使用.之前运行一直没有问题(最多的时候有23个MySQL实例同时运行),后来新配置了一台服务器,启动其对应的实例 ...

  2. ES--06

    第51.初识搜索引擎_上机动手实战多搜索条件组合查询 课程大纲 GET /website/article/_search{ "query": { "bool": ...

  3. 帆软报表(finereport) 折叠树

    在进行展现数据时,希望模板的数据是可以动态折叠的,即点击数据前面的加号才展开对应下面的数据,可通过树节点按钮实现折叠树效果 实现思路: 1.这里建立一个内置数据集 添加数据 设置模板样式,添加颜色和对 ...

  4. vue-地址插件 v-region

    demo地址:https://terryz.gitee.io/vue/#/region/demo

  5. Deformable Convolutional Network

    Deformable conv赋予了CNN位置变换的能力,与普通卷积的对比如下.可以看到,在每个特征点上,会产生一个偏移,变成 不规则的卷积(感觉本质上,就是让CNN自己去学习感受野). 思想来源于S ...

  6. Linux安装Tomcat-Nginx-FastDFS-Redis-Solr-集群——【第九集-补充-之安装mariadb】

    由于也是第一次安装,再此不必献丑了,贴上参考链接: 1,指导我为什么使用mariadb而不是用mysql:https://blog.csdn.net/liumiaocn/article/details ...

  7. Hadoop| YARN| 计数器| 压缩| 调优

    1. 计数器应用 2. 数据清洗(ETL) 在运行核心业务MapReduce程序之前,往往要先对数据进行清洗,清理掉不符合用户要求的数据.清理的过程往往只需要运行Mapper程序,不需要运行Reduc ...

  8. pycharm中连接公网IP方法

    我们的公网IP可以加到pycharm里面,这样程序跑的时候,在测试过程中就用pycharm直接修改文件,然后在pycharm里面上传,操作更加便捷 在pycharm中找到tool按钮,在菜单栏里面 然 ...

  9. antd中按需加载使用react-app-rewired报错

    [描述] 按照antd官网步骤 https://ant.design/docs/react/use-with-create-react-app-cn 最后yarn start会报错 [解决方法] 原因 ...

  10. Linux 定时任务的配置

    通常我们会需要定时启动一些shell脚本,类似Windows中的Task Scheduler, 下面是在AWS EMR Cluster 主几点上配置的步骤: 1. 先创建一个shell脚本,将需要执行 ...