题目连接:

http://acm.hdu.edu.cn/showproblem.php?pid=1133

题目大意:

有m+n个人去买电影票,每张电影票50元,  m个人是只有50元一张的,  n个人是只有100元一张的, 电影院自己本身是没有零钱的。 那么要收到100元的钱必须找人家50, 那么再次之前就必须

收到一个50元的, 问你有多少种不同的排列方式。 (注意: 这里每个人都看成了不同的元素)

题目分析:

我们要是能找人家钱首先必须要有 m >= n

我们dp[m][n] 再加一个人 只能又  dp[m-1][n]  和 dp[m][n-1] 转化而来

假设m-1 > n 前面的所有状态都合法

那么 再加入一个带50元人时, 此人的合法的安插位置应该有 m 个, 我们先把这第m个50元的人放在最后, 是 1 种绝对是合法的,因为dp[m-1][n]是合法的放在最后是不影响结果的

我们放在最后这个人可以和前门的 (m-1)个人中的任意一个互换位置, 形成 (m-1) 种情况  加上之前的 1种 总共是 m 种, 同理我们可以推出 n的 情况

递推公式:

dp[m][n] = dp[m-1][n]*m + dp[m][n-1]*n

因为此题的数据范围是100  所以需要用到大数来写

#include <iostream>
#include <queue>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <stack>
#include <algorithm>
#include <vector>
#include <string>
#include <cmath>
using namespace std;
const long long maxn =;
const long long INF = 0xfffffff; int dp[maxn][maxn][maxn*];
void Slove()
{
dp[][][] = ;
for(int i=; i<maxn; i++)
{
for(int j=; j<=i; j++)
{
for(int k=; k<*maxn; k++)
{
dp[i][j][k] += dp[i-][j][k]*i + dp[i][j-][k]*j;
dp[i][j][k+] += dp[i][j][k]/;
dp[i][j][k] %= ;
}
}
}
} void Putt(int m,int n)
{
int i;
for(i=*maxn-; i >=; i--)
{
if(dp[m][n][i] != )
break;
}
for(; i >=; i--)
printf("%d", dp[m][n][i]);
printf("%d\n",dp[m][n][]);
} int main()
{
Slove();
int m, n, cas = ;
while(cin >> m >> n, m+n)
{
cout << "Test #" <<cas++ <<":" << endl;
Putt(m,n);
}
return ;
} /* dp[m][n] = dp[m-1][n]*m + dp[m][n-1]*n */

Buy the Ticket HDU 1133 递推+大数的更多相关文章

  1. Buy the Ticket HDU 1133 卡特兰数应用+Java大数

    Problem Description The "Harry Potter and the Goblet of Fire" will be on show in the next ...

  2. Children’s Queue HDU 1297 递推+大数

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1297 题目大意: 有n个同学, 站成一排, 要求 女生最少是两个站在一起, 问有多少种排列方式. 题 ...

  3. Buy the Ticket HDU - 1133 大数dp

    题意: 演唱会门票售票处,那里最开始没有零钱.每一张门票是50元,人们只会拿着100元和50元去买票,有n个人是拿着50元买票,m个人拿着100元去买票. n+m个人按照某个顺序按序买票,如果一个人拿 ...

  4. Buy the Ticket HDU 1133

    传送门 [http://acm.hdu.edu.cn/showproblem.php?pid=1133] 题目描述和分析 代码 #include<iostream> #include< ...

  5. hdu 1041(递推,大数)

    Computer Transformation Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/ ...

  6. HDOJ(HDU).2044-2049 递推专题

    HDOJ(HDU).2044-2049 递推专题 点我挑战题目 HDU.2044 题意分析 先考虑递推关系:从1到第n个格子的时候由多少种走法? 如图,当n为下方格子的时候,由于只能向右走,所以有2中 ...

  7. HDU 2842 (递推+矩阵快速幂)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2842 题目大意:棒子上套环.第i个环能拿下的条件是:第i-1个环在棒子上,前i-2个环不在棒子上.每个 ...

  8. Tiling(递推+大数)

    Description In how many ways can you tile a 2xn rectangle by 2x1 or 2x2 tiles? Here is a sample tili ...

  9. "红色病毒"问题 HDU 2065 递推+找循环节

    题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=2065 递推类题目, 可以考虑用数学方法来做, 但是明显也可以有递推思维来理解. 递推的话基本就是状态 ...

随机推荐

  1. OpenGL中glPushMatrix和glPopMatrix的原理

    glPushMatrix.glPopMatrix操作事实上就相当于栈里的入栈和出栈. 很多人不明确的可能是入的是什么,出的又是什么. 比如你当前的坐标系原点在你电脑屏幕的左上方.如今你调用glPush ...

  2. jquery中修改一个元素的值或内容

    jquery中修改一个元素的值或内容,比如数值增加可以使用这个方法取得原值并+1 $this.text(function(i,ot){return Number(ot)+1;});

  3. RunTime 应用实例–关于埋点的思考

    埋点是现在很多App中都需要用到的,这个问题可能每个人都能处理,但是怎样来减少埋点所带来的侵入性,怎样用更加简洁的方式来处理埋点问题,怎样减少误埋,如果上线了发现少埋了怎么办?下面是本文讨论的重点: ...

  4. ASP.NET-FineUI开发实践-12

    1.网上找到了行合并的示例,extjs写的,我把它挪过来改了下,FineUI也能用,就是只能放着看,选择和编辑行扩展列没有测试,放出来大家看着用吧. <script> F.ready(fu ...

  5. 下拉框上移、下移、添加、移除demo

    <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <sc ...

  6. ASP.NET MVC 几种 Filter 的执行过程源码解析

    一.前言 之前也阅读过MVC的源码,并了解过各个模块的运行原理和执行过程,但都没有形成文章(所以也忘得特别快),总感觉分析源码是大神的工作,而且很多 人觉得平时根本不需要知道这些,会用就行了.其实阅读 ...

  7. class-loader.

    the jdk hierarchical relationship of class-loader ----Module Class Loading and Bootstrapping---- boo ...

  8. 字符串转换成JSON(js)

    JSON.parse('{"site":"zlog"}'); 使用JSON.parse需严格遵守JSON规范, 属性都需用双引号引起来, 一定是双引号!! 相反 ...

  9. MyBatis学习笔记(2)——缓存

    一级缓存:基于PerpetualCache的HashMap本地缓存,其存储作用域为Session,当Session flush或 close之后,该Session 中的所有Cache将被清空 二级缓存 ...

  10. js 刷新页面大全

    一.先来看一个简单的例子: 下面以三个页面分别命名为frame.html.top.html.bottom.html为例来具体说明如何做. frame.html 由上(top.html)下(bottom ...