CF451 - Devu and Flowers

n倍经验题:

CF451E Devu and Flowers - 洛谷

codeforces传送门

感觉算法进阶指南的题目有空还是要都刷一下

题意: 有n种花,每种花最多有 f i f_i fi​朵,问要取s朵有多少种取法(对1e9+7取模)

$ n \leq 20, s \leq 1e14, f_i \leq 1e12$

思路:

(其实感觉网上题解随便一搜都讲的比我好我就记录整理给自己看看(

状压+组合数 (隔板法)+容斥原理

如果每个f都无限大,则 a n s = C n + s − 1 n − 1 ans = C^{n - 1}_{n + s - 1} ans=Cn+s−1n−1​(隔板法)

但这样取会有花超过该种花总数上限,但考虑某种超过上限的花,该花至少取了f+1,即不合法地取该花的总数为 C ( n + s − 1 ) − ( f − 1 ) n − 1 C^{n - 1}_{(n + s - 1) - (f - 1)} C(n+s−1)−(f−1)n−1​,(相当于这种花已经取了f+1,其余(n + s - 1) - (f - 1)继续隔板)

结合到n的范围,这时候容斥就来了

最终的 a n s = C n + s − 1 n − 1 − ∑ C n + s − 1 − f i − 1 n − 1 + ∑ C n + s − 1 − f i − 1 − f j − 1 n − 1 … ans = C^{n - 1}_{n + s - 1} - \sum C^{n - 1}_{n + s - 1 - f_i - 1} + \sum C^{n - 1}_{n + s - 1 - f_i - 1 - f_j - 1} \dots ans=Cn+s−1n−1​−∑Cn+s−1−fi​−1n−1​+∑Cn+s−1−fi​−1−fj​−1n−1​…

同样注意到n很小,C可以直接算,算的时候注意不要爆longlong

#include<bits/stdc++.h>using namespace std;typedef long long ll;constexpr ll mod = 1e9 + 7;
constexpr ll N = 30;ll f[N];
ll invn[N]; // n invinline void init() {invn[0] = invn[1] = 1;for (ll i = 2; i < N; ++i) {invn[i] = (mod - mod / i) * invn[mod % i] % mod;}
}ll C(ll up, ll down) {if (up > down) return 0;if (up < 0 || down < 0) return 0;ll res = 1;for (ll i = down - up + 1; i <= down; ++i) {res = res * (i % mod) % mod;}for (ll i = 1; i <= up; ++i) {res = res * invn[i] % mod;}return res;
}signed main() {ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);init();ll n, s;cin >> n >> s;for (ll i = 0; i < n; ++i) {cin >> f[i];}ll ans = 0;for (ll st = 0; st < (1 << n); ++st) {ll cnt = 0, down = n + s - 1, up = n - 1;for (ll i = 0; i < n; ++i) {if ((st >> i) & 1) {cnt++;down -= f[i] + 1;}}
//        cout << cnt << " " << up << " " << down << endl;if (cnt & 1) {ans = (ans - C(up, down) + mod) % mod;} else {ans = (ans + C(up, down)) % mod;}}cout << (ans + mod) % mod << endl;return 0;
}

# CF451 - Devu and Flowers相关推荐

  1. cf451E. Devu and Flowers(产生不同多重集数量)

    cf451E. Devu and Flowers 题意: 有n个箱子,第i个箱子里有ai朵花,同一个箱子里花的颜色一样,不同箱子里的花颜色不一样.现在在这些箱子里选出m朵花组成一束,求一共有多少种方案 ...

  2. 解题报告(五)组合计数(ACM / OI)超高质量题解

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  3. kinectfusion解析_2019/02/09 对于KinectFusion 的理解

    网上有很多关于Kinect Fusion 的详细介绍,包括各个部分的算法,思路,以及应用上的限制和优化. 在此就不多介绍了. KinectFusion 提供了非常基础的用RGB-D 相机实现的 Den ...

  4. 牛客竞赛数学专题班生成函数I 题解

    牛客竞赛数学专题班生成函数I 题解 题单链接 背包 题目链接 题意 总共有888个物品,对于每个物品的选法都有要求,问带nnn个物品的方案数. 思路 构造生成函数,并将等比级数转为合式(∏i=0xi= ...

  5. OI每周刷题记录——lrllrl

    看这标题就知道我是模仿的hzwer大佬,远程%%% 大佬的OI经历让蒟蒻我深受感触,为了晚一些AFO本蒟蒻也得加油了 从高二上期第一周开始计数,每个星期天更一次,一直更到我AFO 如果这是我此生最后一 ...

  6. java判断重复字符个数_Java中判断字符串中相同字符的个数

    译文---C#堆VS栈(Part Three) 前言 在本系列的第一篇文章中,介绍了值类型和引用类型在参数传递时的不同,本文将讨论如何应用ICloneable接口实现去修复引在堆上的用变量所带来的问题 ...

  7. LeetCode刷题记录8——605. Can Place Flowers(easy)

    LeetCode刷题记录8--605. Can Place Flowers(easy) 目录 LeetCode刷题记录8--605. Can Place Flowers(easy) 题目 语言 思路 ...

  8. I - Watering Flowers CodeForces - 617C

    I - Watering Flowers CodeForces - 617C int -2-31 ~ 231-1 == 2e9 longlong -2-63 ~ 263-1 == 9e18 有两种方法 ...

  9. [BZOJ] 1634: [Usaco2007 Jan]Protecting the Flowers 护花

    1634: [Usaco2007 Jan]Protecting the Flowers 护花 Time Limit: 5 Sec  Memory Limit: 64 MB Submit: 827  S ...

最新文章

  1. unity桌面设置vnc_win7系统通过VNCViewer访问Ubuntu桌面环境的操作方法
  2. NV21数据 镜像 旋转
  3. 练习二十一:关于猴子吃桃的问题
  4. Java中利用socket实现简单的服务端与客户端的通信(中级)——实现任意双向通信
  5. win7下安装 python2 和python3
  6. qt中下拉列表使用函数setCurrentText()设置当前显示值不能设置成功
  7. 20 个强大的 Sublime Text 插件
  8. vue3,vite2,json数据通过拼接显示链接src
  9. MySQL存储过程的异常处理
  10. CSS3学习案例1——超级链接类型标示图标
  11. PMP-5.组织结构类型
  12. showdown让你的网站支持Markdown和代码块highlight
  13. forever保护node server进程报错(node:8156) Warning: Accessing non-existent property ‘padLevels‘ of module e
  14. matlab ild,10GBASE-KR
  15. 攻防世界密码学 浅尝
  16. pandas选取数据方法
  17. Mathcad_excel数据处理
  18. 秋招提前批面试汇总(嵌入式+c++面经)国电南自 vivo 乐鑫 中兴 大华 联发科 中科创达 腾讯 绿盟 速腾 科大讯飞 深信服 商汤 海康持续更新
  19. TOP100summit:【分享实录-华为】微服务场景下的性能提升最佳实践
  20. PHP上传图片到数据库

热门文章

  1. 如果只能学苹果一件事,那你应该选择——《疯狂的简洁》
  2. 量子计算机能算一加一吗,等量子计算机能算出来1+1=2这个加法,再谈论是否超过传统计算机为好...
  3. 技术分享:PCB压合铜箔起皱工艺改善方法探讨
  4. 量子计算机是不是伪科学,别再被伪科学“量子产品”蒙蔽了
  5. mysql 左对齐_mysql
  6. 有头结点和没有头结点的单链表
  7. M19.单链表删除指定结点--类型总结(链表)
  8. 聚客网络6元撸一年景安空间
  9. html5对flash的影响,浅谈flash和html5的发展趋势对站长的影响
  10. leetcode827. 最大人工岛 - 垃圾代码,毫无优化