zoukankan      html  css  js  c++  java
  • HDU

    Permutation Counting

    Given a permutation a1, a2, … aN of {1, 2, …, N}, we define its E-value as the amount of elements where ai > i. For example, the E-value of permutation {1, 3, 2, 4} is 1, while the E-value of {4, 3, 2, 1} is 2. You are requested to find how many permutations of {1, 2, …, N} whose E-value is exactly k.

    InputThere are several test cases, and one line for each case, which contains two integers, N and k. (1 <= N <= 1000, 0 <= k <= N). 
    OutputOutput one line for each case. For the answer may be quite huge, you need to output the answer module 1,000,000,007.Sample Input

    3 0
    3 1

    Sample Output

    1
    4
    
    
            
     

    Hint

    There is only one permutation with E-value 0: {1,2,3}, and there are four permutations with E-value 1: {1,3,2}, {2,1,3}, {3,1,2}, {3,2,1}


    数列1-n,可以随意排列组合,求恰有k个a[i]>i的排列个数。
    一道找规律的dp。看数据范围就知道不能暴力求解,但可以用暴力找出n较小的几种小数列排列数,发现规律。类似杨辉三角,就像两数和靠拢,于是可以发现状态转移方程f[i][j]=(((i+1)*f[i][j-1])%MOD+((j-i)*f[i-1][j-1])%MOD)%MOD

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    #include<string>
    #include<math.h>
    #include<queue>
    #include<set>
    #include<stack>
    #include<algorithm>
    #include<vector>
    #include<iterator>
    #define MAX 1005
    #define INF 0x3f3f3f3f
    #define MOD 1000000007
    using namespace std;
    
    typedef long long ll;
    
    ll f[MAX][MAX];
    
    int main()
    {
        int n,m,i,j;
        for(i=1;i<=1000;i++){
            f[0][i]=1;
        }
        for(i=1;i<=1000;i++){
            for(j=i+1;j<=1000;j++){
                f[i][j]=(((i+1)*f[i][j-1])%MOD+((j-i)*f[i-1][j-1])%MOD)%MOD;
            }
        }
        while(~scanf("%d%d",&n,&m)){
            if(n==m){
                printf("0
    ");
                continue;
            }
            printf("%lld
    ",f[m][n]);
        }
        return 0;
    }
     
  • 相关阅读:
    支付宝支付-扫码支付
    安装agent
    设置微服务环境变量脚本
    曹工说Spring Boot源码(23)-- ASM又立功了,Spring原来是这么递归获取注解的元注解的
    matlab文件拷贝
    hive优化之调整mapreduce数目
    软件测试面试题
    wtforms第三方校验库
    flask貌似可以学习和参考的网站
    flask 接受(获取)url 请求的参数 的方法 和 表单 post过来的数据
  • 原文地址:https://www.cnblogs.com/yzm10/p/8808837.html
Copyright © 2011-2022 走看看