【bzoj 2431】逆序对数列(DP)
2017-10-20 15:33
141 查看
传送门biu~
考虑按顺序向序列中加元素的情况,加入第i个元素可能产生0~i-1个逆序对。f[i][j]表示加入第i个元素后一共有j个逆序对的方案数。所以f[i][j]就可以由f[i-1][j-(i-1)]~f[i-1][j]更新来。用一个前缀和维护就可以了。
考虑按顺序向序列中加元素的情况,加入第i个元素可能产生0~i-1个逆序对。f[i][j]表示加入第i个元素后一共有j个逆序对的方案数。所以f[i][j]就可以由f[i-1][j-(i-1)]~f[i-1][j]更新来。用一个前缀和维护就可以了。
#include<bits/stdc++.h> using namespace std; const int mod=10000; int n,k; int f[1005][1005],s[1005][1005]; int main(){ scanf("%d%d",&n,&k); f[1][0]=1; for(int i=0;i<=k;++i) s[1][i]=1; for(int i=2;i<=n;++i){ for(int j=0;j<=k;++j){ f[i][j]=s[i-1][j]; if(j-i>=0) f[i][j]-=s[i-1][j-i]; (f[i][j]+=mod)%=mod; } s[i][0]=1; for(int j=1;j<=k;++j) s[i][j]=(s[i][j-1]+f[i][j])%mod; } printf("%d",f [k]); return 0; }
相关文章推荐
- 【BZOJ2431】【HAOI2009】逆序对数列 DP
- [bzoj2431][HAOI2009][逆序对数列] (dp计数)
- 【bzoj2431】[HAOI2009]逆序对数列 dp
- [BZOJ2431][HAOI2009]逆序对数列(DP+前缀和)
- BZOJ 2431 逆序对数列 DP
- 【BZOJ 2431】 [HAOI2009] 逆序对数列 (DP)
- [数位dp] bzoj 2431: [HAOI2009]逆序对数列
- BZOJ 2431 逆序对数列 DP
- [BZOJ2431][HAOI2009][DP][前缀和]逆序对数列
- BZOJ 2431: [HAOI2009]逆序对数列 dp
- [BZOJ2431][HAOI2009]逆序对数列(DP)
- BZOJ2431 [HAOI2009]逆序对数列 【dp】
- BZOJ 2431: [HAOI2009]逆序对数列【dp】
- [bzoj2431][DP]逆序对数列
- BZOJ 2431: [HAOI2009]逆序对数列( dp )
- bzoj 2431: [HAOI2009]逆序对数列【dp】
- 【BZOJ】2431 [HAOI2009]逆序对数列 递推
- BZOJ2431 [HAOI2009]逆序对数列
- Bzoj 2431 HAOI2009 逆序对数列
- BZOJ 2431: [HAOI2009]逆序对数列