&&&c*^s&&u 1968

传送门:http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1968

比赛的时候懒得读,没想到是这么一个简单的dp

就一个插空选择的递推。

和HDU3664不同的是,3664是替换,位置1到i的替换,新加的可放在最后

不管是插空还是替换,保证是全概率事件即可。注意3664替换第一个和插空到第一个空是一个情况。

dp[i][j]为i个数E值为j的个数:

1.插在开头

2.插到逆序对中间

3.插到非逆序对中间

4.插到最后

无非就是上面四种情况乘与当前情况的个数

#include <iostream>
#include <string>
#include <queue>
#include <map>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <vector>
#include <queue>
#define eps 1e-8
using namespace std;
typedef long long LL;
const int maxn = 100+10;
int dp[maxn][maxn];

void init()
{
  for(int i = 1; i < maxn; i++) {
    dp[i][0]=1;

    for(int j = 1; j < i; j++) {
        dp[i][j] = (dp[i-1][j] + dp[i-1][j-1] + dp[i-1][j]*j + dp[i-1][j-1]*(i-1-j))%1001113;
    }
  }
}

int main() {
    init();
    int T;
    cin>>T;
    while(T--) {
        int a,b,c;
        scanf("%d%d%d",&a,&b,&c);
        printf("%d %d
",a,dp[b][c]);
    }
    return 0;
}
原文地址:https://www.cnblogs.com/zhangmingzhao/p/7229613.html