The King’s Ups and Downs

Posted tonyyy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了The King’s Ups and Downs相关的知识,希望对你有一定的参考价值。

有n个高矮不同的士兵,现在要将他们按高,矮依次排列,问有多少种情况。

化简为 n个人,求出可以形成波浪形状的方法数

#include <iostream>
#include <cmath>
#include <math.h>
#include <vector>
#include <cstdio>
#include <cstring>

#include <algorithm>
#define ll long long
using namespace std;
ll dp[25][2];
ll sum[25];
ll C(ll x,ll y)
{
    ll ans = 1;
    if(x < y)
         return 0;
    else if(x == y || y ==0)
         return 1;
    else{
        for(ll i=x;i>=(x-y+1);--i){
            ans *= i;
        }
        while(y){
            ans /= y--;
        }
        return ans;
    }
}
void f()
{
    sum[1] = 1;
    sum[2] = 2;
    dp[0][0] = dp[0][1] = 1;
    dp[1][0] = dp[1][1] = 1;
    dp[2][0] = dp[2][1] = 1;

    for(int i=3;i<=20;i++)
    {
        for(int j=0;j<i;j++)
        {
            sum[i] += dp[j][0]*dp[i-j-1][1]*C(i-1,j);
        }
        dp[i][0] = dp[i][1] = sum[i]/2;
    }
}

int main()
{
    memset(dp,0,sizeof(dp));
    memset(sum,0,sizeof(sum));
    f();
    int n,m,p;
    cin>>n;
    while(n--)
    {
        cin>>m>>p;
        cout<<m<<" "<<sum[p]<<endl;
    }
    return 0;
}

 

以上是关于The King’s Ups and Downs的主要内容,如果未能解决你的问题,请参考以下文章

HDU 4489 The King’s Ups and Downs

HDU 4489 The King's Ups and Downs

UVA 6177 The King's Ups and Downs DP

HDU 4489 The King’s Ups and Downs(DP + 组合数)

HDU——T The King’s Problem

The King’s Walk (动规)