8635 气球(组合数)
8635 气球
该题有题解
时间限制:500MS 内存限制:1000K
提交次数:204 通过次数:58
题型: 编程题 语言: G++;GCC
Description
一天,OYY 从外面打完比赛回来,手上拿了很多个气球,颜色各不相同。他见到我,就说,你看,我拿了很多气球! 我膜拜死了!!然后他就问了我一个问题,如果把这里的气球分成若干份。有多少种分法呢?由于我数学非常菜,顿时头晕了,因此希望大家能帮我解答这个问题(@_@))
输入格式
输入数据有2行 第1 行有两个数n,m,分别代表oyy 手上的气球个数和分的份数(n<=10,m<=5) 第2 行有m 个数,分别代表每一份的个数,保证总个数等于n
输出格式
输出数据有1行,输出一个数代表不同分法的总数。
输入样例
3 1 3
输出样例
1
提示
Sample Input2: 4 2 2 2 Sample Output2: 3
题解
由于气球是不同的,假设有n个气球,第一份气球要拿a个,那么就有C(n,a)种情况,假设第二分有b个,那就是C(n,a)*C(n-a,b)种。。。最后一堆不用算,直接是1,注意气球个数可能重复,假设都为k,那答案就要除以一个A(k,k)
#include <iostream> #include <cstdio> #include <algorithm> using namespace std; int C(int a,int b) {long long s1=1,s2=1;for (int i=1;i<=b;i++){s1*=a;a--;s2*=i;}return s1/s2; } int A(int a,int b) {int ans=1;for (int i=1;i<=b;i++){ans*=a;a--;}return ans; } int d[20]; int main() {int a,b,c[20];int ans=1;scanf("%d%d",&a,&b);for (int i=0;i<b;i++){scanf("%d",&c[i]);d[c[i]]++;}int i=0;for (;i<b-1;i++){ans*=C(a,c[i]);a-=c[i];}for (int i=0;i<20;i++)if (d[i]>1){ans/=A(d[i],d[i]);}printf("%d",ans);return 0; }
转载于:https://www.cnblogs.com/scaugsh/p/5532547.html
8635 气球(组合数)相关推荐
- Codeforces Round #439C 组合数-The Intriguing Obsession
http://codeforces.com/contest/869/problem/C 给定三种颜色气球的数量, 要求相同颜色或者在不能一个联通块里,或者最短距离大于等于3 问你图的数目. 思路:我们 ...
- 链接:https://ac.nowcoder.com/acm/challenge/terminal来源:牛客网 kotori最近迷上了摆气球的游戏。她一共有n种气球,每种气球有无数个。她要拿出若干
牛客网一战到底题,有点小意思,估计很多人不知道为什么有60%的案例过不了. 原题链接:https://ac.nowcoder.com/acm/challenge/terminal 题目及说明: 题目描 ...
- LeetCode简单题之“气球” 的最大数量
题目 给你一个字符串 text,你需要使用 text 中的字母来拼凑尽可能多的单词 "balloon"(气球). 字符串 text 中的每个字母最多只能被使用一次.请你返回最多可以 ...
- Codeforces Beta Round #95 (Div. 2) 部分解题报告 (dp,组合数,)
做这样的比赛既考快速编码的能力,还有快速思维的能力.本人很弱,跌了rating..加油!!!.. 第一题上来就把题意理解错了..粗心啊..直接模拟着做就行:1:如果字符串全是大写字母就进行大小写转换: ...
- leetcode-452 用最少数量的箭引爆气球
在二维空间中有许多球形的气球.对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标.由于它是水平的,所以y坐标并不重要,因此只要知道开始和结束的x坐标就足够了.开始坐标总是小于结束坐标.平面 ...
- 贪心:Burst Balloons 最少次数完成射击气球
已知在一个平面上有一定数量的气球,平面可以看作一个坐标系,在平面的x轴的不同位 置安排弓箭手向y轴方向射箭,弓箭可以向y轴走无穷远;给定气球的宽度 xstart ≤ x ≤ xend,问至少需要多少弓 ...
- [CQOI2014]数三角形 组合数 + 容斥 + gcd
推导过程 : 组合数+容斥原理+gcd 正确做法是暴力的一种优化,ans=所有情况 - 平行坐标轴的三点共线 - 斜线三点共线 如果快速求斜线三点共线: 首先要知道一个结论,对于点(a,b) (x,y ...
- 多重集表示合json数据_计数DP(划分数,多重集组合数)
划分数:把n个无区别的物品划分成不超过m组. dp[i][j]=j的i划分的总数. dp[i[j]=dp[i][j-i]+dp[i-1][j] 即:将j个物品分成i份,有两种情况:每份划分都大于等于1 ...
- 【青少年编程】【三级】打气球游戏
「青少年编程竞赛交流群」已成立(适合6至18周岁的青少年),公众号后台回复[Scratch]或[Python],即可进入.如果加入了之前的社群不需要重复加入. 微信后台回复"资料下载&quo ...
最新文章
- 关于css的float
- H5 小代码(实时更新)
- 使用Silverlight3中的DataPager实现服务器端分页
- UVA 141 The Spot Game
- C语言EOF是什么?
- Hadoop概念学习系列之Hadoop 生态系统
- linux命令deploy_Linux deploy 使用教程
- linux 重置网卡配置_Linux不进入网卡配置文件更改静态ip
- 设置log缓存_Redis中缓存击穿 缓存穿透 缓存雪崩解决方案
- [原创]按键小精灵通用去广告破解补丁
- DB2 8.2 9.1 9.5 9.7 下载地址(原创)
- 搭建安卓开发环境 GIT配色 terminator SecureCRT source insight Notepad++安装
- 通过python实现txt中,字母概率的计算,以及信源熵的计算,并且输出
- Linux USB 鼠标驱动程序详解
- html如何在表单里加虚线,大佬,表格下方的虚线怎么添加?
- 网银“交易密码丢失U盾作废”引质疑
- 外媒点赞,浪潮存储为何能入围全球最佳主存储供应商
- 苹果输了官司,iPad会改名吗?
- idea创建三种应用程序的方法:springboot,控制台程序,windows服务程序
- 2019 数学建模国赛 C 题思路