BZOJ 2431 [HAOI2009]逆序对数列

Posted zzyer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BZOJ 2431 [HAOI2009]逆序对数列相关的知识,希望对你有一定的参考价值。

题解:DP

f[i][j]表示1~i形成逆序对j对的方案数

转移用前缀和优化

O(nk)

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
const int maxn=1009;
const int mm=10000;

int n,m;

int f[maxn][maxn];
int sum[maxn][maxn];

int main(){
	scanf("%d%d",&n,&m);
	
	f[1][0]=1;
	for(int i=2;i<=n;++i){
		for(int j=m;j>=0;--j)sum[i-1][j]=(sum[i-1][j+1]+f[i-1][j])%mm;
		for(int j=0;j<=m;++j){
			int u=j;
			int d=max(j-i+1,0);
			f[i][j]=(sum[i-1][d]-sum[i-1][u+1]+mm)%mm;
		}
	}
	
	cout<<f[n][m]<<endl;
	return 0;
}

  

以上是关于BZOJ 2431 [HAOI2009]逆序对数列的主要内容,如果未能解决你的问题,请参考以下文章

bzoj2431: [HAOI2009]逆序对数列(前缀和优化dp)

BZOJ 2431 [HAOI2009]逆序对数列

bzoj2431:[HAOI2009]逆序对数列

bzoj2431:[HAOI2009]逆序对数列

[bzoj2431][HAOI2009][逆序对数列] (dp计数)

bzoj2431[HAOI2009]逆序对数列 dp