大致题意:

从n个盒子里面取出s多花。每一个盒子里面的花都同样,而且每一个盒子里面花的多数为f[i],求取法总数。

解题思路:

我们知道假设n个盒子里面花的数量无限,那么取法总数为:C(s+n-1, n-1) = C(s+n-1, s)。

能够将问题抽象成:x1+x2+...+xn = s, 当中0<=xi <= f[i]。求满足条件的解的个数。

两种方法能够解决问题:

方法一:这个问题的解能够等价于:mul = (1+x+x^2+...+x^f[1])*(1+x+x^2+...+x^f[2])*...*(1+x+x^2+...+x^f[n])中x^s项的系数。而 (1+x+x^2+...+x^f[i]) = (1-x^(1+f[i]))/(1-x),那么mul = (1-x^(1+f[1]))*(1-x^(1+f[2]))*...*(1-x^(1+f[n]))*(1-x)^(-n)。

对于 (1-x^(1+f[1]))*(1-x^(1+f[2]))*...*(1-x^(1+f[n]))这部分的系数。因为n非常小,直接暴力(2^n)枚举计算各项的系数。

对于(1-x)^(-n)的系数,(1-x)^(-n) = (1/(1-x))^n, 而1/(1-x) = 1 + x + x^2 + ... + x^n + ...,无穷级数。那么(1-x)^(-n) = (1+x+x^2+...+x^m+...)^n,要求这个式子x^s项的系数,就相当于从n个盒子(花的数量无限)里面去s朵花,求取法总数。于是(1-x)^(-n)中x^s项的系数为:C(s+n-1, n-1)。

知道这两部分的系数以后问题就迎刃而解了。

方法二:容斥原理。

设A1 = {x1 >= f[1]+1}, A2 = {x2 >= f[2]+1}, ..., An = {xn >= f[n]+1}, 全集S = (n+s-1, s)。那么问题的解集为:全集减去不符合条件的解集(某个Ai为真)。 不符合条件的解集能够用容斥原理来解决。即:

暴力枚举(2^n)Ai的状态,假设Ai为真,则s -= (f[i]+1)。那么这样的状态下,解的为题相当于从n个盒子里面取s(减去该状态下全部f[i]+1以后的值)朵花,盒子花的数目没有限制,解的个数为C(s+n-1, n-1)。

Codeforces #258 Div.2 E Devu and Flowers的更多相关文章

  1. Codeforces Round #258 (Div. 2) E. Devu and Flowers 容斥

    E. Devu and Flowers 题目连接: http://codeforces.com/contest/451/problem/E Description Devu wants to deco ...

  2. Codeforces Round #258 (Div. 2)E - Devu and Flowers

    题意:n<20个箱子,每个里面有fi朵颜色相同的花,不同箱子里的花颜色不同,要求取出s朵花,问方案数 题解:假设不考虑箱子的数量限制,隔板法可得方案数是c(s+n-1,n-1),当某个箱子里的数 ...

  3. Codeforces Round #258 (Div. 2)[ABCD]

    Codeforces Round #258 (Div. 2)[ABCD] ACM 题目地址:Codeforces Round #258 (Div. 2) A - Game With Sticks 题意 ...

  4. Codeforces Round #258 (Div. 2) 小结

    A. Game With Sticks (451A) 水题一道,事实上无论你选取哪一个交叉点,结果都是行数列数都减一,那如今就是谁先减到行.列有一个为0,那么谁就赢了.因为Akshat先选,因此假设行 ...

  5. Codeforces 451E Devu and Flowers(容斥原理)

    题目链接:Codeforces 451E Devu and Flowers 题目大意:有n个花坛.要选s支花,每一个花坛有f[i]支花.同一个花坛的花颜色同样,不同花坛的花颜色不同,问说能够有多少种组 ...

  6. Codeforces Round #258 (Div. 2) 容斥+Lucas

    题目链接: http://codeforces.com/problemset/problem/451/E E. Devu and Flowers time limit per test4 second ...

  7. Codeforces Round #258 (Div. 2)

    A - Game With Sticks 题目的意思: n个水平条,m个竖直条,组成网格,每次删除交点所在的行和列,两个人轮流删除,直到最后没有交点为止,最后不能再删除的人将输掉 解题思路: 每次删除 ...

  8. Codeforces Round #258 (Div. 2)-(A,B,C,D,E)

    http://blog.csdn.net/rowanhaoa/article/details/38116713 A:Game With Sticks 水题.. . 每次操作,都会拿走一个横行,一个竖行 ...

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

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

随机推荐

  1. OpenJDK源码研究笔记(八)-详细解析如何读取Java字节码文件(.class)

    在上一篇OpenJDK源码研究笔记(七)–Java字节码文件(.class)的结构中,我们大致了解了Java字节码文件的结构. 本篇详细地介绍了如何读取.class文件的大部分细节. 1.构造文件  ...

  2. Unity C# 设计模式(一)单例模式

    动机(Motivation):    在软件系统中,经常有这样一些特殊的类,必须保证它们在系统中只存在一个实例,才能确保它们的逻辑正确性.以及良好的效率 意图:    保证一个类仅有一个实例,并提供一 ...

  3. ECNUOJ 2144 抗震机械制造

    抗震机械制造 Time Limit:1000MS Memory Limit:65536KBTotal Submit:312 Accepted:78 Description  为了应付可能到来的地震,E ...

  4. Network authentication method and device for implementing the same

    A network authentication method is to be implemented using a network authentication device and a use ...

  5. 分布式文件存储FastDFS(一)初识FastDFS

    一.FastDFS简单介绍 FastDFS是一款开源的.分布式文件系统(Distributed File System),由淘宝开发平台部资深架构师余庆开发.作为一个分布式文件系统,它对文件进行管理. ...

  6. java 爬虫在 netbeans 里执行和单独执行结果不一样

    在做内容測试的时候.发现我的爬虫(前些文章略有提及)在 netbeans 里面可以成功爬取网页内容,而单独执行时,给定一个 url,爬到的网页却与在浏览器里面打开 url 的网页全然不一样,这是一个非 ...

  7. js library 集合

    js library 集合 查看已经开源的js library https://cdnjs.com/

  8. ES6学习笔记(八)第七种类型Symbol

    1.概述 ES5 的对象属性名都是字符串,这容易造成属性名的冲突.比如,你使用了一个他人提供的对象,但又想为这个对象添加新的方法(mixin 模式),新方法的名字就有可能与现有方法产生冲突.如果有一种 ...

  9. Linux下java/bin目录下的命令集合

    Linux下JAVA命令(1.7.0_79) 命令 详解 参数列表 示例 重要程度 资料 appletviewer Java applet 浏览器.appletviewer 命令可在脱离万维网浏览器环 ...

  10. Perl初学笔记

    标量数据 标量:数字和字符串. 数字:Perl不存在整形,全部是double类型.整形常量会被自动转换为浮点型. Perl数字字面量(直接量):+-和小数点是非必须的,e代表10的多少次方.例如:-1 ...