HDU1133 Buy the Ticket —— 卡特兰数
题目链接:https://vjudge.net/problem/HDU-1133
Buy the Ticket
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 7427 Accepted Submission(s): 3105
Suppose the cinema only has one ticket-office and the price for per-ticket is 50 dollars. The queue for buying the tickets is consisted of m + n persons (m persons each only has the 50-dollar bill and n persons each only has the 100-dollar bill).
Now the problem for you is to calculate the number of different ways of the queue that the buying process won't be stopped from the first person till the last person.
Note: initially the ticket-office has no money.
The buying process will be stopped on the occasion that the ticket-office has no 50-dollar bill but the first person of the queue only has the 100-dollar bill.
3 1
3 3
0 0
6
Test #2:
18
Test #3:
180
题意:
电影票50元一张,有m个拿着50元和n个拿着100元的人去买票。开始时售票处没有一分钱(即开始时不能为100元的找钱),问:这m+n个人应该怎么排队,才能使得每个人都能买到票(即都能找钱或不用找钱)?
题意:
1. 当m<n时,肯定不能满足条件,因为50元的张数小于100元的张数,所以不能为所以的100元找回50元。
2. 当m>=n时,通过合理的安排,就能满足条件:
2.1 首先所有的排列数为 C[m+n][m],即从m+n个位置中挑选m个,作为50元的位置。
2.2 然后排除掉非法排列:假设第k个100元不能找钱, 则前面有k-1个50元,所以后面有n-k个100元, m-k+1个50元,如果把第k个之后的人50换成100,100换成50,那么总的就变成了有:m+1个100元, n-1个50元,那么C[m+n][m+1]就是非法的排列数。
2.3 所以合法的排列数为:C[m+n][m] - C[m+n][m+1],由于人是有区别的, 所以还需要乘上两种人的全排列,所以 ans = (C[m+n][m] - C[m+n][m+1])*A[m]*A[n]。
代码如下:
//package main;
import java.util.Scanner;
import java.math.BigInteger; public class Main { public static void main(String[] args){ BigInteger[] A = new BigInteger[];
BigInteger[][] C = new BigInteger[][]; A[] = BigInteger.valueOf();
for(int i = ; i<=; i++) {
A[i] = A[i-].multiply(BigInteger.valueOf(i));
} for(int i = ; i<=; i++)
for(int j = ; j<=; j++)
C[i][j] = BigInteger.valueOf(); for(int i = ; i<=; i++) {
C[i][] = BigInteger.valueOf();
for(int j = ; j<=i; j++) {
C[i][j] = C[i-][j].add(C[i-][j-]);
}
} int kase = ;
Scanner input = new Scanner(System.in);
while(input.hasNext()){
int m = input.nextInt();
int n = input.nextInt();
if(m+n==) break;
System.out.println("Test #"+(++kase)+":");
BigInteger ans = BigInteger.ZERO;
if(m>=n) {
ans = A[m].multiply(A[n].multiply((C[m+n][m].subtract(C[m+n][m+]))));
}
System.out.println(ans);
}
}
}
HDU1133 Buy the Ticket —— 卡特兰数的更多相关文章
- 【hdoj_1133】Buy the Ticket(卡特兰数+大数)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1133 题目的意思是,m个人只有50元钱,n个人只有100元整钱,票价50元/人.现在售票厅没钱,只有50元 ...
- HDU 1133 Buy the Ticket 卡特兰数
设50元的人为+1 100元的人为-1 满足前随意k个人的和大于等于0 卡特兰数 C(n+m, m)-C(n+m, m+1)*n!*m! import java.math.*; import java ...
- hdu1133 Buy the Ticket (卡兰特数应用+java大数)
题目链接:http://acm.hdu.edu.cn/showproblem.php? pid=1133 [题意] 电影票50块一张 有m个人手里正好有50块,n个人手里正好有100块,售票厅開始没有 ...
- 【高精度练习+卡特兰数】【Uva1133】Buy the Ticket
Buy the Ticket Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
- Buy the Ticket(卡特兰数+递推高精度)
Buy the Ticket Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Tota ...
- 【HDU 1133】 Buy the Ticket (卡特兰数)
Buy the Ticket Problem Description The "Harry Potter and the Goblet of Fire" will be on sh ...
- HDUOJ---1133(卡特兰数扩展)Buy the Ticket
Buy the Ticket Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)To ...
- HDOJ/HDU 1133 Buy the Ticket(数论~卡特兰数~大数~)
Problem Description The "Harry Potter and the Goblet of Fire" will be on show in the next ...
- Buy the Ticket HDU 1133 卡特兰数应用+Java大数
Problem Description The "Harry Potter and the Goblet of Fire" will be on show in the next ...
随机推荐
- HTTP基础认证Basic Authentication
HTTP基础认证Basic Authentication Basic Authentication是一种HTTP访问控制方式,用于限制对网站资源的访问.这种方式不需要Cookie和Session,只需 ...
- 10.【nuxt起步】-引用mintui
这时候我们完成了list.vue,但是怎么返回index.vue,这时候需要这个头部返回 1.我们使用现成的minu-ui,eleme的开源移动端 ,参考 https://www.cnblogs.co ...
- 详解RocketMQ中的consumer
上述就是MQ中有关Consumer的类图,下面来介绍一下每个类 1.MQAdmin:底层类,上篇博客已经提过,就不再此重提 2.MQConsumer:Consumer公共的接口,常用的方法如下 如果消 ...
- java性能监控工具jmc-windows
jmc Java Mission Control is a Profiling, Monitoring, and Diagnostics Tools Suite. Synopsis jmc [ opt ...
- 综合运用: C++11 多线程下生产者消费者模型详解(转)
生产者消费者问题是多线程并发中一个非常经典的问题,相信学过操作系统课程的同学都清楚这个问题的根源.本文将就四种情况分析并介绍生产者和消费者问题,它们分别是:单生产者-单消费者模型,单生产者-多消费者模 ...
- nagios插件之登陆SBC监控电话数
运行:sbc_calls_status_new auto_ssh_sbc_10_17.sh | auto_ssh_sbc_11_17.sh vi sbc_calls_status_new.c #inc ...
- Windows 编程1
杀死一个进程 使用命令 system( taskkill /f /im QQ.exe); 即可. 打开一个进程 使用命令 system("应用程序的位置"); 头文件: ...
- .net网站上传图片换电脑不显示 当不用网站的IP地址访问图片,只用相对路径访问时,在发布网站的时候,将上传图片的目标文件夹,包含在项目中再发布即可。
.net网站上传图片换电脑不显示 当不用网站的IP地址访问图片,只用相对路径访问时,在发布网站的时候,将上传图片的目标文件夹,包含在项目中再发布即可.
- UVA 1541 - To Bet or Not To Bet(概率递推)
UVA 1541 - To Bet or Not To Bet 题目链接 题意:这题题意真是神了- -.看半天,大概是玩一个游戏,開始在位置0.终点在位置m + 1,每次扔一个硬币,正面走一步,反面走 ...
- nanonets
https://app.nanonets.com/ List of Models IMAGES Images: Image Categorization Beta Input: Image Out ...