UVA 题目10128 Queue(DP)

原创 2015年11月18日 11:03:42
There is a queue with N people. Every person has a different heigth. We can see P people, when we
are looking from the beginning, and R people, when we are looking from the end. Its because they
are having different height and they are covering each other. How many different permutations of our
queue has such a interesting feature?
Input
The input consists of T test cases. The number of them (1 ≤ T ≤ 10000) is given on the first line of
the input file.
Each test case begins with a line containing a single integer number N that indicates the number
of people in a queue (1 ≤ N ≤ 13). Then follows line containing two integers. The first integer
corresponds to the number of people, that we can see looking from the beginning. The second integer
corresponds to the number of people, that we can see looking from the end.
Output
For every test case your program has to determine one integer. Print how many permutations of N
people we can see exactly P people from the beginning, and R people, when we are looking from the
end.
Sample Input
3
10 4 4
11 3 1
3 1 2
Sample Output
90720
1026576

1

题目大意:n个高低不同的人排队,从前边看有m个人,从后边能看到r个人。问有多少种站法

思路:dp[i][j][k]表示i个人,从前边看j个,从后边看k个的排法种类数,把最矮的放在前边j+1(谁都挡不住),放在最后边k+1,(谁都挡不住),放在中间任意一个位置,j,k不变,于是递推公式dp[i][j][k]=dp[i-1][j-1][k]+dp[i-1][j][k-1]+(i*2)*dp[i-1][j][k]

ac代码

16452698 10128 Queue Accepted C++ 0.003 2015-11-18 02:59:23

#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
#define LL long long
using namespace std;
LL dp[22][22][22];
void fun()
{
    int i,j,k;
    dp[1][1][1]=1;
    for(i=2;i<=13;i++)
    {
        for(j=1;j<=i;j++)
        {
            int r=i-j+1;
            for(k=1;k<=r;k++)
            {
                dp[i][j][k]=dp[i-1][j][k-1]+dp[i-1][j-1][k]+(i-2)*dp[i-1][j][k];
            }
        }
    }
}
int main()
{
    int t;
    scanf("%d",&t);
    fun();
    while(t--)
    {
        int n,m,r;
        scanf("%d%d%d",&n,&m,&r);
        printf("%lld\n",dp[n][m][r]);
    }
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

UVA - 10128 Queue (DP?DFS)

竞赛题目UVa-10128 题解

uva10128(Queue)

uva10128(Queue) 题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=sho...

UVA题目回文词

  • 2014年12月11日 19:01
  • 3KB
  • 下载

NYOJ 题目 55 懒省事的小明(priority_queue)

懒省事的小明 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述       小明很想吃果子,正好果园果子熟了。在果园里,小明已经将所有的果子打了下来,而且按果子的不同种...

UVA题目大全

  • 2014年01月12日 10:06
  • 5.02MB
  • 下载

OJ动态规划DP题目列表

  • 2010年08月10日 21:30
  • 90KB
  • 下载

UVa 133 The Dole Queue (模拟循环链表)

133 - The Dole Queue Time limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_onl...

dp 动态规划 背包 专项练习题目

  • 2009年05月09日 20:04
  • 14.69MB
  • 下载

UVa 12100 printer queue 解题报告

UVa 12100
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:UVA 题目10128 Queue(DP)
举报原因:
原因补充:

(最多只允许输入30个字)