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;
}