【BZOJ 3027】 3027: [Ceoi2004]Sweet (容斥原理+组合计数)
2024-10-18 08:30:29
3027: [Ceoi2004]Sweet
Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 71 Solved: 34Description
John得到了n罐糖果。不同的糖果罐,糖果的种类不同(即同一个糖果罐里的糖果种类是相同的,不同的糖果罐里的糖果的种类是不同的)。第i个糖果罐里有 mi个糖果。John决定吃掉一些糖果,他想吃掉至少a个糖果,但不超过b个。问题是John 无法确定吃多少个糖果和每种糖果各吃几个。有多少种方法可以做这件事呢?
Input
从标准输入读入每罐糖果的数量,整数a到b
John能够选择的吃掉糖果的方法数(满足以上条件)Output
把结果输出到标准输出(把答案模 2004 输出)
1<=N<=10,0<=a<=b<=10^7,0<=Mi<=10^6
Sample Input
2 1 3
3
5Sample Output
9HINT
(1,0),(2,0),(3,0),(0,1),(0,2),(0,3),(1,1),(1,2),(2,1)
Source
【分析】
就是分成(<=b) - (<= a-1)的。
然后每个糖果罐容斥,枚举哪些超过了的。
假设减掉之后剩下最多选x个糖果
就是$C_{0+n-1}^{n-1}+C_{1+n-1}^{n-1}+C_{2+n-1}^{n-1}+...+C_{x+n-1}^{n-1}$
求和之后就是$C_{x+n}^{n}$
但是!!!模数可能没有逆元,又不能n^2预处理。。
【怎么办呢???
【又涨姿势。。
首先都是$C_{x}^{n}$的形式,即$\dfrac{x!}{(x-n )!}/(n!)$
n!很小,让$mod=Mod*n!$
计算的时候模mod,最后除以n!,再模Mod。。。
就可以了。
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
#define Mod 2004
#define Maxm 10000010
#define LL long long int w[],n;
LL mul; int get_c(int x,int y)
{
if(x<y) return ;
LL mod=mul*Mod,ans=;
for(int i=x;i>=x-y+;i--) ans=1LL*ans*i%mod;
return (ans/mul)%Mod;
} int cal(int x)
{
int ans=;
for(int i=;i<(<<n);i++)
{
int ss=,sm=x;
for(int j=;j<=n;j++) if((<<j-)&i)
{
ss++;sm-=w[j]+;
}
if(sm<) continue;
if(ss&) ans-=get_c(sm+n,n);
else ans+=get_c(sm+n,n);
ans%=Mod;
}
return ans;
} int main()
{
int a,b;
scanf("%d%d%d",&n,&a,&b);
mul=;for(int i=;i<=n;i++) mul=mul*i;
for(int i=;i<=n;i++) scanf("%d",&w[i]);
printf("%d\n",((cal(b)-cal(a-))%Mod+Mod)%Mod);
return ;
}
2017-04-25 21:25:39
最新文章
- IT雇员及外包商选择:人品第一
- .NET跨平台之旅:借助ASP.NET 5 Beta5的新特性显示CLR与操作系统信息
- 如何从投票的网站的管理后台导出已投票的邀请码数据至Excel,并且稍修改,再导入到现场抽奖软件中?
- 响应式Web初级入门
- Why does this json4s code work in the scala repl but fail to compile?
- php Memcache/Memcached操作手册
- sql server 2008还原数据库,出现缺少介质问题
- 服务器端解决JS跨域调用问题
- linux设备驱动归纳总结(四):2.进程调度的相关概念【转】
- 深入了解Qt(二)之元对象系统(Meta-Object System)
- python 文件查找 glob
- hdu 4712 (随机算法)
- css样式float造成的浮动“塌陷”问题的解决办法
- 项目代码摘抄,dot的用法之1
- js 仿 asp中的 asc 和 chr 函数的代码
- ThinkPHP3.2.3版本框架could not find driver错误
- Akka(6): become/unbecome:运算行为切换
- ionic构建APP--简单操作实现APP制作
- mysql执行sql脚本
- Chris Richardson微服务翻译:微服务部署