Description

对于一个数列{ai},如果有i**<**j且ai>aj,那么我们称ai与aj为一对逆序对数。若对于任意一个由1~n自然数组成的数列,可以很容易求出有多少个逆序对数。那么逆序对数为k的这样自然数数列到底有多少个?

Input

第一行为两个整数n,k。

Output

写入一个整数,表示符合条件的数列个数,由于这个数可能很大,你只需输出该数对10000求余数后的结果。

Sample Input

样例输入

4 1

Sample Output

样例输出

3

样例说明:

下列3个数列逆序对数都为1;分别是1 2 4 3 ;1 3 2 4 ;2 1 3 4;

测试数据范围

30%的数据 n<=12

100%的数据 n<=1000,k<=1000

/*
暴力n^3.
30分.
*/
#include<iostream>
#include<cstdio>
#define MAXN 10001
#define mod 1000000007
using namespace std;
int f[MAXN][MAXN],n,m;
int main() {
scanf("%d %d",&n,&m);
f[1][0]=1;
for(int i=1; i<=n; i++)
for(int j=0; j<=m; j++)
for(int k=0; k<i; k++)
{
f[i][j]+=f[i-1][j-k];
f[i][j]%=mod;
}
printf("%d ",f[n][m]);
return 0;
}
/*
中学生不能太暴力.
so 我们考虑优化.
DP暴力n^3完全能搞出来.
然后我们发现转移的时候
对于i状态只有i-1状态转移而来.
我们考虑类似于滚动数组之类的东西.
so 处理一个前缀和.
f[i][j]表示i个数j个逆序对时的方案数.
对于第i个数来说,若是递增序放置的
那么 i放置位置的后面每个数都可以与i形成一对逆序对.
*/
#include<iostream>
#include<cstdio>
#define MAXN 10001
#define mod 1000000007
using namespace std;
long long f[MAXN][MAXN],n,m,tot;
int main()
{
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
f[i][0]=1;
for(int i=2;i<=n;i++)
{
tot=f[i-1][0];
for(int j=1;j<=m;j++)
{
if (j>=i) tot-=f[i-1][j-i];
tot+=f[i-1][j];
f[i][j]=tot%mod;
}
}
printf("%d",f[n][m]);
return 0;
}

Bzoj 2431 HAOI2009 逆序对数列的更多相关文章

  1. BZOJ 2431: [HAOI2009]逆序对数列( dp )

    dp(i,j)表示1~i的全部排列中逆序对数为j的个数. 从1~i-1的全部排列中加入i, 那么可以产生的逆序对数为0~i-1, 所以 dp(i,j) = Σ dp(i-1,k) (j-i+1 ≤ k ...

  2. [bzoj 2431][HAOI2009]逆序对数列(递推+连续和优化)

    题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2431 分析: f(i,j)表示前i个数字逆序对数目为j时候的方案数 那么有f(i,j) ...

  3. BZOJ 2431 [HAOI2009]逆序对数列:dp 逆序对

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=2431 题意: 给定n,k,问你有多少个由1~n组成的排列,使得逆序对个数恰好为k个. 题解 ...

  4. BZOJ 2431: [HAOI2009]逆序对数列【dp】

    Description 对于一个数列{ai},如果有i<j且ai>aj,那么我们称ai与aj为一对逆序对数.若对于任意一个由1~n自然数组成的数列,可以很容易求出有多少个逆序对数.那么逆序 ...

  5. 2431: [HAOI2009]逆序对数列

    2431: [HAOI2009]逆序对数列 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 954  Solved: 548[Submit][Status ...

  6. bzoj千题计划153:bzoj2431: [HAOI2009]逆序对数列

    http://www.lydsy.com/JudgeOnline/problem.php?id=2431 dp[i][j] 表示i的排列,有j个逆序对的方案数 加入i+1,此时i+1是排列中最大的数, ...

  7. bzoj2431:[HAOI2009]逆序对数列

    单组数据比51nod的那道题还弱...而且连优化都不用了.. #include<cstdio> #include<cstring> #include<cctype> ...

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

    2431: [HAOI2009]逆序对数列 Time Limit: 5 Sec  Memory Limit: 128 MBSubmit: 2312  Solved: 1330[Submit][Stat ...

  9. P2513 [HAOI2009]逆序对数列

    P2513 [HAOI2009]逆序对数列 题目描述 对于一个数列{ai},如果有iaj,那么我们称ai与aj为一对逆序对数.若对于任意一个由1~n自然数组成的数列,可以很容易求出有多少个逆序对数.那 ...

随机推荐

  1. cmder使用手册

    http://bliker.github.io/cmder/ 使其可以在Win+R中运行 将解压出的路径 放入系统变量 path中 如 :D:\software\cmder 解决中文错位 选个喜欢的字 ...

  2. phpMyAdmin安装设置

    phpMyAdmin是一种MySQL的管理工具,它直接从web上去管理MySQL.   假设你的web(网页存放)根目录是 /var/www/ 假设你的主机web访问是这样的 http://192.1 ...

  3. 集群搭建:主机宽带拨号上网,虚拟机使用桥接模式,该如何ping通外网

    首先介绍一下看这篇文章需要的基础.需要了解虚拟机的 虚拟机的三种网络模式,有Linux基础知识,这些都是前提.首先介绍一下我的环境:主机:win7虚拟机:VMware Workstation 10虚拟 ...

  4. HW3.11

    import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner i ...

  5. [Locked] Range Sum Query 2D - Mutable

    Range Sum Query 2D - Mutable Given a 2D matrix matrix, find the sum of the elements inside the recta ...

  6. 最新Blog

    应该会长期稳定的 https://b.intmainreturn0.com/

  7. 教程-Delphi操作快捷键

    ************************************************************** Delphi快捷键-全-高手用-南山古桃(新手)-同学共进 ******* ...

  8. C# 连接SQL数据库 常用连接字符串

    一:C# 连接SQL数据库 Data Source=myServerAddress;Initial Catalog=myDataBase;User Id=myUsername;Password=myP ...

  9. jekyll bootstrap更改主题theme

    使用主题 介绍: 由于JB版本号0.2.X的主题,如今全然是模块化的.他们跟踪和单独版本号的主题包. 这让每一个人都能够自由公布和共享主题. Jekyll-Bootstrap v 0.2.x仅仅附带t ...

  10. ApkTool动态打包

    引言: APK在推广的时候可能会须要动态打包APK.比方公布到不同渠道的时候,须要在manifest文件里改动渠道信息.或者app在推广的时候.须要在apk包里面加上推广人信息等. 环境变量: 1.J ...