• (寒假集训) 不等数列


    不等数列

    时间限制: 1 Sec  内存限制: 256 MB
    提交: 9  解决: 9
    [提交][状态][讨论版]

    题目描述

    将1到n任意排列,然后在排列的每两个数之间根据他们的大小关系插入“>”和“<”。问在所有排列中,有多少个排列恰好有k个“<”。答案对2012取模。

    输入

    第一行2个整数n,k。

    输出

    一个整数表示答案。

    样例输入

    5 2
    

    样例输出

    66
    

    提示

    对于30%的数据:n <= 10
    对于100%的数据:k < n <= 1000。

    【分析】dp[i][j]表示 i 个数中有 j 个 <的方案数。

    #include <iostream>
    #include <cstring>
    #include <cstdio>
    #include <algorithm>
    #include <cmath>
    #include <string>
    #include <map>
    #include <stack>
    #include <queue>
    #include <vector>
    #define inf 2e9
    #define met(a,b) memset(a,b,sizeof a)
    typedef long long ll;
    using namespace std;
    const int N = 2e3+5;
    const int M = 4e5+5;
    int n,m,k,sum,ans;
    ll dp[N][N];
    int main(){
        scanf("%d%d",&n,&k);
        dp[2][1]=1;
        for(int i=1;i<=n;i++)dp[i][0]=1;
        for(int i=3;i<=n;i++){
            for(int j=1;j<=min(i-1,k);j++){
                dp[i][j]=(dp[i-1][j]*(j+1)+dp[i-1][j-1]*(i-j))%2012;
            }
        }
        printf("%lld
    ",dp[n][k]);
        return 0;
    }
  • 相关阅读:
    要坚持的好习惯
    Attribute与Property关系
    浅谈ES6中super关键字
    JS权威指南读书笔记(七)
    JS权威指南读书笔记(六)
    JS权威指南读书笔记(五)
    JS权威指南读书笔记(四)
    函数
    对象
    数值
  • 原文地址:https://www.cnblogs.com/jianrenfang/p/6270646.html
Copyright © 2020-2023  润新知