bzoj 2431[HAOI] 逆序对数列

来源:互联网 发布:无间道3解析知乎 编辑:程序博客网 时间:2024/04/28 23:13

好吧。。这题好久之前做的了,拿出来再瞧一遍。

让求1-n数列的排列中 逆序对数量为k的 数列个数。

dp

状态转移从一半想比较好想。

在0-i-1中插入i 有可能造成 0-i-1个逆序对

所以f[i][j]=Σ(f[i-1][k])j-i+1=

#include<cstdio>#include<algorithm>#include<cstring>//by mars_chusing namespace std;int n,d;int dp[1001][1001];int main(){    scanf("%d%d",&n,&d);    dp[1][0]=1;    for(int i=1;i<=n;i++)    {        for(int j=0;j<=d;j++)        {            for(int k=0;k<i;k++)            {                if(j>=k)                dp[i][j]+=(dp[i-1][j-k])%10000;            }        }    }    printf("%d\n",dp[n][d]%10000);    return 0;}
0 0
原创粉丝点击