Description

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

Input

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

Output

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

Sample Input

4 1

Sample Output

3

Hint

样例说明:
下列3个数列逆序对数都为1;
分别是1 2 4 3 ;1 3 2 4 ;2 1 3 4;

测试数据范围
30%的数据 n<=12
100%的数据 n<=1000,k<=1000

Source

HAOI,分治,递推

Solution

考虑DP。

dp[i][j]表示i的排列中逆序对数为j的方案数。

考虑i的放置,i为最大值,所以放在i-1个位置都可以计算出对答案的贡献,因此DP递推式为:

dp[i][j]=Σdp[i-1][k] (j-i+1<=k<=j)

考虑特殊情况:到i时最多可以贡献i-1对逆序对,所以从dp[0]~dp[j-i+1]这一段不能加!

但是这个算法要枚举i、j和k,时间复杂度为n^3,绝对TLE,因此考虑前缀和优化。

Code

 #include <bits/stdc++.h>
#define int long long using namespace std; inline int read()
{
int f = , x = ;
char c = getchar(); while (c < '' || c > '')
{
if (c == '-')
f = -;
c = getchar();
} while (c >= '' && c <= '')
{
x = x * + c - '';
c = getchar();
} return f * x;
} const int mod = ; int n, m, dp[][]; signed main()
{
n = read(), m = read(); dp[][] = ; for (register int i = ; i <= n; i++)
{
int sum = ; for (register int j = ; j <= m; j++)
{
sum = (sum + dp[i - ][j]) % mod; dp[i][j] = sum; if (j - i + >= )
{
sum = (sum - dp[i - ][j - i + ] + mod) % mod;
}
}
} printf("%lld", dp[n][m]); return ;
}

最新文章

  1. ASP.NET Core 中文文档 第二章 指南(4.10)检查自动生成的Detail方法和Delete方法
  2. 自动化测试工具QTP的使用实例 分类: 软件测试 2015-06-17 00:23 185人阅读 评论(0) 收藏
  3. 【zz】MIT牛人解说数学体系
  4. nyoj163_Phone List_字典树
  5. winform退出或关闭窗体时弹窗提示代码:转
  6. 去“IOE”
  7. scala初学
  8. Sending messages to non-windowed applications -- AllocateHWnd, DeallocateHWnd
  9. Native libraries .so.XY failing to link at runtime
  10. python高级编程之选择好名称:完2
  11. Delphi SysErrorMessage 函数和系统错误信息表
  12. centos6 安装python2.7+和神器pip
  13. servlet篇 之 生命周期
  14. Spring注入静态变量的方法,以及CXF如何获取客户端IP
  15. 封装QML能访问的类
  16. 《css揭秘》下(伪元素,文字背景,垂直居中技巧,文字环绕)
  17. asp.net mvc forms身份认证
  18. Andrew Ng机器学习笔记+Weka相关算法实现(四)SVM和原始对偶问题
  19. 【2018 “百度之星”程序设计大赛 - 初赛(B)-1004】p1m2(迷之二分)
  20. jQuery autocomplete -默认

热门文章

  1. 如何在php7.2/php7.3中安装mcrypt扩展?
  2. php安装xdebug扩展,PHPStorm+XDebug单步调试
  3. openssl 生成免费证书
  4. VMware安装centos7与配置网络
  5. Winform中怎样设置ContextMenuStrip右键菜单的选项ToolStripMenuItem添加照片
  6. vue的$nextTick
  7. shell变量内字符替换和变量字符修改
  8. zabbix的web界面出现乱码解决方案
  9. linq 查询-“必须是可缩小的节点”
  10. 智能手机中下一次被消灭的部件是电话卡和TF卡