p2513 [HAOI2009]逆序对数列

分析

从1~n以此放数

每个数i会产生0~i-1的贡献

dp[i][j]表示前i个数产生j的贡献

前缀和优化一下即可

代码

#include<bits/stdc++.h>
using namespace std;
const int mod = 10000;
int dp[1100][1100];
int main(){
    int i,j,k,n,a,b,c,d;
    cin>>n>>k;
    dp[1][0]=1;
    for(i=2;i<=n;i++){
      int res=0;
      for(j=0;j<=k;j++){
        res=(res+dp[i-1][j])%mod;
        dp[i][j]=res;
        if(j-i+1>=0)res=(res-dp[i-1][j-i+1]+mod)%mod;
      }
    }
    cout<<dp[n][k];
    return 0;
}

 

posted @ 2019-09-06 08:16  水题收割者  阅读(120)  评论(0编辑  收藏  举报