CF451E
一道不错的题,对排列组合能力的要求较高
题意:给定s个相同的小球放在n个不同的盒子里,可以不放,每个盒子有一个放的上限,求一共有多少种放法
解析:首先考虑没有上限的情况,这里比较好解决,采用隔板法,可以计算出放法为
看到网上很少有对这个隔板法进行详解的,这里稍微做一下解释:
隔板法,顾名思义,就是采用放置隔板的方法来进行分组方式的计算,在这里,由于每个小球都是相同的,所以唯一产生不同的可能性就是不同盒子里放的小球个数不同,那么这就转化为了一个分组问题:将s个小球用n-1个隔板分为n组,问方案数有多少
但有一个问题,就是盒子可以不放,如果单纯用隔板的话对于不放的盒子是处理不了的
所以我们再引入n个小球,要求每个盒子至少放一个,这样就能解决这个问题了
所以答案是
接下来,由于现在有上限,所以直接用这个答案是显然不对的。
于是我们考虑容斥。
那么显然,容斥方法就是至少有0个超过上限-至少有1个超过上限+至少有2个超过上限...
那么我们以至少有一个超过上限的算法举例:
显然,我们首先要枚举谁超过了上限,那么这一步可以使用状压来实现,将超过上限的点的状态记作1,其余点状态记作0即可,这样的思想也可以解决更多超过上限的情况。
接下来,我们考虑:至少一个超过上限的表现就是这一个盒子至少放了上限+1个球,而其余盒子随意,不做要求,故我们可以理解为首先将上限+1个球确定地放在这一个盒子里,然后把剩下的球随便放
那么剩下的球随便放的方法同样满足公式
(当然,球的总数会发生改变)
这样问题就解决了。
(其实推导之后有一个总的排列组合公式可以解决这个问题,但基本上看到这个公式正常人就跑了,所以这里只提出思想,因为事实上在实现的时候还是基于这个思想而不是基于最后的结论公式的)
#include <cstdio>
#include <cmath>
#include <cstring>
#include <cstdlib>
#include <iostream>
#include <algorithm>
#include <queue>
#include <stack>
#define mode 1000000007
#define ll long long
using namespace std;
ll pow_mul(ll x,ll y)
{
ll ans=1;
while(y)
{
if(y&1)
{
ans*=x;
ans%=mode;
}
x*=x;
x%=mode;
y>>=1;
}
return ans;
}
ll n;
ll f[25];
ll s;
int main()
{
scanf("%lld%lld",&n,&s);
for(int i=1;i<=n;i++)
{
scanf("%lld",&f[i]);
}
ll ret=0;
for(int i=0;i<(1<<n);i++)
{
int flag=1;
ll tot=s;
for(int j=0;j<n;j++)
{
if(i&(1<<j))
{
flag=-flag;
tot-=(f[j+1]+1);
}
}
if(tot<0)
{
continue;
}
ll s1=1,s2=1;
for(int j=1;j<=n-1;j++)
{
s1*=(tot+j)%mode;
s1%=mode;
s2*=j;
s2%=mode;
}
s1*=pow_mul(s2,mode-2);
ret+=flag*s1;
ret=((ret%mode)+mode)%mode;
}
printf("%lld\n",ret);
return 0;
}
CF451E的更多相关文章
- CF451E Devu and Flowers 解题报告
CF451E Devu and Flowers 题意: \(Devu\)有\(N\)个盒子,第\(i\)个盒子中有\(c_i\)枝花.同一个盒子内的花颜色相同,不同盒子的花颜色不同.\(Devu\)要 ...
- CF451E Devu and Flowers(容斥)
CF451E Devu and Flowers(容斥) 题目大意 \(n\)种花每种\(f_i\)个,求选出\(s\)朵花的方案.不一定每种花都要选到. \(n\le 20\) 解法 利用可重组合的公 ...
- CF451E Devu and Flowers (隔板法 容斥原理 Lucas定理 求逆元)
Codeforces Round #258 (Div. 2) Devu and Flowers E. Devu and Flowers time limit per test 4 seconds me ...
- CF451E Devu and Flowers
多重集求组合数,注意到\(n = 20\)所以可以用\(2 ^ n * n\)的容斥来写. 如果没有限制那么答案就是\(C(n + s - 1, n - 1)\).对每一个限制依次考虑,加上有一种选多 ...
- Luogu CF451E Devu and Flowers 题解报告
题目传送门 [题目大意] 有n种颜色的花,第i种颜色的花有a[i]朵,从这些花中选m朵出来,问有多少种方案?答案对109+7取模 [思路分析] 这是一个多重集的组合数问题,答案就是:$$C_{n+m- ...
- CF451E Devu and Flowers 数论
正解:容斥+Lucas定理+组合数学 解题报告: 传送门! 先mk个我不会的母函数的做法,,, 首先这个题的母函数是不难想到的,,,就$\left ( 1+x_{1}^{1}+x_{1}^{2}+. ...
- CF451E Devu and Flowers(组合数)
题目描述 Devu想用花去装饰他的花园,他已经购买了n个箱子,第i个箱子有fi朵花,在同一个的箱子里的所有花是同种颜色的(所以它们没有任何其他特征).另外,不存在两个箱子中的花是相同颜色的. 现在De ...
- CF451E Devu and Flowers (组合数学+容斥)
题目大意:给你$n$个箱子,每个箱子里有$a_{i}$个花,你最多取$s$个花,求所有取花的方案,$n<=20$,$s<=1e14$,$a_{i}<=1e12$ 容斥入门题目 把取花 ...
- BZOJ1101 [POI2007]Zap 和 CF451E Devu and Flowers
Zap FGD正在破解一段密码,他需要回答很多类似的问题:对于给定的整数a,b和d,有多少正整数对x,y,满足x<=a,y<=b,并且gcd(x,y)=d.作为FGD的同学,FGD希望得到 ...
随机推荐
- 用FileZilla链接Linux服务器
这里以CentOS举例 用SSH文件传输端口,默认为22端口,用netstat -antulp | grep ssh命令查看!
- 高性能IO之Reactor模式
The reactor design pattern is an event handling pattern for handling service requests delivered conc ...
- 已安装nginx支持https配置 the "ssl" parameter requires ngx_http_ssl_module
原文链接:https://blog.seosiwei.com/detail/28 nginx已安装,ssl模块未安装的解决方法: 如果需要在linux中编译自己的nginx服务器,请参照:https: ...
- 学习基础和C语言基础调查
学习基础和C语言基础调查 一.一种比大多数人(超过90%以上)更好的技能 说句实话,我还没有那种特别特别自信的.说我能拿得出手的.所谓能超过百分之九十以上的人的技能.毕竟人外有人,天外有天. 姑且算上 ...
- 【转】Python 3的pathlib模块:驯服文件系统
[转]Python 3的pathlib模块:驯服文件系统 https://python.freelycode.com/contribution/detail/1248 Python部落(python. ...
- LwIP Application Developers Manual7---lwIP with or without an operating system
1.前言 最近有一些讨论关于lwIP如何在单机的环境(比如,没有一个多线程的操作系统)使用. 本文的目的就是描述lwIP如何在无多线程操作系统或有多线程操作系统环境中运行 2.lwIP单线程内核 2. ...
- Python运维开发基础03-语法基础 【转】
上节作业回顾(讲解+温习60分钟) #!/usr/bin/env python3 # -*- coding:utf-8 -*- # author:Mr.chen #只用变量和字符串+循环实现“用户登陆 ...
- leetcode 307 Range Sum Query
问题描述:给定一序列,求任意区间(i, j)的元素和:修改任意一元素,实现快速更新 树状数组 树状数组的主要特点是生成一棵树,树的高度为logN.每一层的高度为k,分布在这一层的序列元素索引的二进制表 ...
- vue 选城市三级联动
<div id="example"> <select v-model="prov"> <option v-for="op ...
- SharePoint 2013: Workflow Manager Backend 服务意外地终止
一.环境:SharePoint 2013 + Workflow Manager 1.0 二.错误描述: Workflow Manager Backend 服务意外地终止,这种情况已经出现了 42106 ...