zoj——1202 Divide and Count
Divide and Count
Time Limit: 2 Seconds Memory Limit: 65536 KB
Jack has several beautiful diamonds, each of them is unique thus precious. To keep them safe, he wants to divide and store them in different locations. First, he has bought some coffers. These boxes are identical except that their capacities (the number of the diamonds that a box can contain) may diverse. Before he puts his diamonds in, he wants to figure out how many different ways he can store these diamonds into the coffers. He recruits you, a young programmer from Zhejiang University, to give him the answer.
Input:
The input consists of several test cases. Each test case begins with a positive integer N, which indicates the number of the coffers Jack has bought. Then the following N integers are the capacities of each box. The total number of the diamonds Jack has equals to the sum of the capacities of all the coffers.
All the integers given are no greater than 12, you can be assured that a result always fits into a 32-bit integer.
Output:
For every test case, print out an integer representing the number of the different ways Jack can store his diamonds. Each integer is to be printed on a single line.
Sample input:
2 3 3 3 1 2 3
Sample output:
10 60
题意:
杰克有好几颗漂亮的钻石,每一颗都是独一无二的。为了保护他们的安全,他想把它们分开存放在不同的地方。首先,他买了一些小金库。这些盒子是相同的,只是它们的容量(盒子所能容纳的钻石的数目)可能是不同的。在他把钻石放进去之前,他想弄清楚他能把这些钻石存放在金库里有多少种不同的方式。他招募你,一个来自浙江大学的年轻程序员,给他答案。
输入:
输入由几个测试用例组成。每个测试用例以一个正整数n开头,这表示杰克购买的金库的数量。接下来的n个整数是每个盒子的容量。杰克钻石的总数等于所有金库的总和。
给定的所有整数不大于12,可以确保结果总是适合32位整数。
输出:
对于每个测试用例,打印出一个整数,表示杰克存储钻石的不同方式的数量。每个整数都要在一行上打印。
思路:
排列组合
我们来手模一下第一个样例:2 3 3 我们先往第一个金库中装钻石,这样的话我们有C36(比较丑,凑活着看吧)种方案,我们在往第二个匣子中放钻石,这是我们已经把3个钻石放入了第一个匣子中,也就是说我们这是还剩下6-3颗钻石,我们把这些钻石放入这个匣子中,有C33种方案。但是我们这样算出来肯定是不对的,因为容积相同的金库完全相同,那么也就是说我们要除去匣子相同的方案数,但是除什么呢??!这也正是我与一位大佬发生争执的地方。我认为应该是除相同个数的阶乘,而他认为除相同的个数。
好,我们先不看这个样例,因为看不出来啊、、、、
我们自己手模样例,就找个简单的吧,3 1 1 1 我们跟上面说的一样,先往第一个匣子中放钻石,这样我们有C13种方案,我们往第二个匣子中放钻石这是我们有3-1颗钻石,我们找出一个来放入第二个匣子中,这样我们有C12种方案数,最后一个我也就不再写了,这样我们求出来一共有6种方法,但是我们知道这三个匣子是完全相同的,那么也就是说我们只有一种方法,那么这样的话我们该除几就显而易见了。
至于题的这个公式,我想各位大佬上面的解释的时候应该也都能看明白(也可能本蒟蒻写的一点都不明白)那我就不啰嗦了
代码:
#include<cstdio> #include<cstdlib> #include<cstring> #include<iostream> #include<algorithm> #define N 20 using namespace std; long long ans; int n,m,w,tot,a[N],num[N]; int read() { ,f=; char ch=getchar(); ; ch=getchar();} +ch-'; ch=getchar();} return x*f; } int jie(int x,int y) { ; for(int i=x;i<=y;i++) sum*=i; return sum; } int main() { while(~scanf("%d",&n)) { ;i<=;i++) a[i]=; ans=;tot=; ;i<=n;i++) num[i]=read(),a[num[i]]++,tot+=num[i]; ;i<=n;i++) { w=tot-num[i]+; ans*=jie(w,tot)/jie(,num[i]); tot-=num[i]; } ;i<=;i++) ,a[i]); cout<<ans<<endl; } ; }
zoj——1202 Divide and Count的更多相关文章
- ZOJ 1202 Divide and Count(排列组合)
Divide and Count 题目大意:给定箱子的数量和每个箱子的容量,在每个箱子里都装满对应容量的宝石,每颗宝石都是独一无二的,求一共有多少种放置方式.但是如果两个箱子的容量相同,则认为是 同一 ...
- ZOJ 1202 Divide and Count
原题链接 题目大意:某人手上有一大批钻石,他同时有一些盒子恰好放下这些钻石,每个盒子可以放一个或多个,问一共有几种方法. 解法:这其实是一道排列与组合计算题,主要是写出组合算法的代码,把计算公式转为程 ...
- POJ题目细究
acm之pku题目分类 对ACM有兴趣的同学们可以看看 DP: 1011 NTA 简单题 1013 Great Equipment 简单题 102 ...
- 【转】POJ百道水题列表
以下是poj百道水题,新手可以考虑从这里刷起 搜索1002 Fire Net1004 Anagrams by Stack1005 Jugs1008 Gnome Tetravex1091 Knight ...
- ZOJ 1610.Count the Colors-线段树(区间染色、区间更新、单点查询)-有点小坑(染色片段)
ZOJ Problem Set - 1610 Count the Colors Time Limit: 2 Seconds Memory Limit: 65536 KB Painting s ...
- 466. Count The Repetitions
Define S = [s,n] as the string S which consists of n connected strings s. For example, ["abc&qu ...
- Java的大数操作分为BigInteger和BigDecimal
Java的大数操作分为BigInteger和BigDecimal,但这两给类是分开使用的,有时候在编程的时候显得略微繁琐,现在编写了一个将二者合二为一的大数操作类. 大数操作类代码如下: 1 pack ...
- Java大数操作类
Java的大数操作分为BigInteger和BigDecimal,但这两给类是分开使用的,有时候在编程的时候显得略微繁琐,现在编写了一个将二者合二为一的大数操作类. 大数操作类代码如下: packag ...
- Java实现八种排序算法(代码详细解释)
经过一个多星期的学习.收集.整理,又对数据结构的八大排序算法进行了一个回顾,在测试过程中也遇到了很多问题,解决了很多问题.代码全都是经过小弟运行的,如果有问题,希望能给小弟提出来,共同进步. 参考:数 ...
随机推荐
- PWBI--Excel 数据源
博客园地址: http://blog.sina.com.cn/s/blog_68c4467d0102w5cc.html http://www.cnblogs.com/asxinyu/p/Power_B ...
- 国际化------international
1.配置web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi=& ...
- [转]ASP.NET MVC的帮助类HtmlHelper和UrlHelper
本文转自:http://www.cnblogs.com/greatandforever/archive/2010/04/20/1715914.html?login=1 在ASP.NET MVC框架中没 ...
- mongo 3.4分片集群系列之二:搭建分片集群--哈希分片
这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建 ...
- Git——github基本操作
基本概念 上一篇文章写到git共享仓库,但是有个局限性,就是这个仓库存在于本地,其他人无法从我们这个仓库拿到共享的内容 但是我们可以将这个共享仓库放入一个远程的服务器上,然后设置一些登录权限就能完美的 ...
- Redis应用场景[分享]
Redis应用场景[分享] 1.取最新N个数据的操作2.排行榜应用 取TOPN操作3.需要精确设定过期时间的应用4.计数器应用(文章阅读数.评论数)5.Uniq操作,获取某段时间所有数据排重值6.实时 ...
- SpringBoot基于websocket的网页聊天
一.入门简介正常聊天程序需要使用消息组件ActiveMQ或者Kafka等,这里是一个Websocket入门程序. 有人有疑问这个技术有什么作用,为什么要有它?其实我们虽然有http协议,但是它有一个缺 ...
- TWaver MONO Design中动画的导出与播放
使用过MONO编辑器的朋友都应该了解MONO中支持一些动画的设置,比如开门,开窗,弹出设备,旋转场景,镜头巡航等.但如何将这些动画应用到自己的场景中呢?比如我们在编辑器中给机柜定义了动画,怎样让做好的 ...
- [Luogu] P3701 「伪模板」主席树
题目背景 byx和手气君都非常都非常喜欢种树.有一天,他们得到了两颗奇怪的树种,于是各自取了一颗回家种树,并约定几年后比一比谁种出来的树更加牛x. 题目描述 很快,这棵树就开花结果了.byx和手气君惊 ...
- FATE HDU - 2159
解法 完全背包但是又有别的条件(忍耐值为体力经验是价值) ①首先杀怪是有上限s的,所以需要记录杀怪的数量并且if时候还需要加上条件 ②最后还得遍历一下从小到大遍历当前dp范围内是不是已经有够经验的那么 ...