求 $n$ 个数的排列中逆序数为 $k$ 的排列数
$f[n][k]$ 表示 $n$ 个数的排列中逆序数为 $k$ 的排列数
$f[n][k] = \sum_{i = 0}^{n - 1} f[n - 1][k - i]$
考虑当前 $n - 1$ 的排列中有 $k - i$ 个逆序对
那么对于 $n$ 的排列,把最大数放到倒数第 $i$ 个数前,就会增加 $i$ 个逆序对
同理 $f[n][k - 1] = \sum_{i = 0} ^ {n - 1} f[n - 1][k - 1 - i]$
两式相减

\begin{array}{l}
f[n][k] - f[n][k - 1] \\
= \sum_{i = 0}^{n - 1} f[n - 1][k - i] - \sum_{i = 0} ^ {n - 1} f[n - 1][k - 1 - i] \\
= f[n - 1][k] - f[n - 1][k - n]
\end{array}

then 地推公式为
$f[n][k] = f[n][k - 1] + f[n - 1][k] - f[n - 1][k - n]$

#include <bits/stdc++.h>

#define gc getchar()

inline int read() {
int x = ; char c = gc;
while(c < '' || c > '') c = gc;
while(c >= '' && c <= '') x = x * + c - '', c = gc;
return x;
} int f[(int)1e3 + ][(int)1e3 + ];
const int Mod = ; void Work() {
int n = (int)1e3;
for(int i = ; i <= n; i ++) f[i][] = ;
for(int i = ; i <= n; i ++) {
for(int j = ; j <= i * (i - ) / && j <= (int)1e3; j ++) {
f[i][j] = (f[i][j] + f[i][j - ] + f[i - ][j]) % Mod;
if(j - i >= ) f[i][j] -= f[i - ][j - i];
f[i][j] = (f[i][j] + Mod) % Mod;
}
}
} int main() {
Work();
int T = read();
for(; T; T --) printf("%d\n", f[read()][read()]);
return ;
}

51nod 1020的更多相关文章

  1. 51nod 1020 逆序排列

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1020 题意: 思路: 一开始用了三重循环... 设f(n,k)表示n个数 ...

  2. 51nod 1020 逆序排列(dp,递推)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1020 题意:是中文题. 题解:很显然要设dp[i][j]表示 ...

  3. 51nod 1020 逆序排列 递推DP

    1020 逆序排列  基准时间限制:2 秒 空间限制:131072 KB 分值: 80 难度:5级算法题  收藏  关注 在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么 ...

  4. 51nod 1020 逆序排列 DP

    在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序.一个排列中逆序的总数就称为这个排列的逆序数. 如2 4 3 1中,2 1,4 3,4 1,3 1是逆序 ...

  5. 51nod 1020 逆序排列——dp

    在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序.一个排列中逆序的总数就称为这个排列的逆序数. 如2 4 3 1中,2 1,4 3,4 1,3 1是逆序 ...

  6. 51nod水题记

    妈呀51nod已经刷不动了又开始跟bzoj一样总是得看题解了...那么发一下总结吧... 1051:最大子矩阵 #include<cstdio> #include<cstring&g ...

  7. 【51Nod 1244】莫比乌斯函数之和

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1244 模板题... 杜教筛和基于质因子分解的筛法都写了一下模板. 杜教筛 ...

  8. 51Nod 1268 和为K的组合

    51Nod  1268  和为K的组合 1268 和为K的组合 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 给出N个正整数组成的数组A,求能否从中选出若干个,使 ...

  9. 51Nod 1428 活动安排问题

    51Nod   1428  活动安排问题 Link: http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1428 1428 活 ...

随机推荐

  1. JVM OOM异常会导致JVM退出吗?

    出处:  https://mp.weixin.qq.com/s/8j8YTcr2qhVActLGzOqe7Q  https://blog.csdn.net/h2604396739/article/de ...

  2. 项目element-ui checkbox里面获取选中项 实现批量删除 修改

    <el-table :data="tableData" stripe border style="width: 100%" @selection-chan ...

  3. 导出excel的功能效果实现

    <el-button @click="exportExcel" > <i style="display: inline-block;"> ...

  4. SAS学习笔记35 options语句

  5. ActiveMQ 简单应用

    ActiveMQ简单应用到复杂的订单模块,提高前台的访问速度. 一.当提交订单后,发送消息给ActiveMQ. @Service public class JmsSend { private stat ...

  6. Windows 32位-调试与反调试

    1.加载调试符号链接文件并放入d:/symbols目录下. 0:000> .sympath srv*d:\symbols*http://msdl.microsoft.com/download/s ...

  7. Nginx实现同一端口HTTP跳转HTTPS

    小目标:在只监听一个端口的情况下,将http访问跳转为https. 一般情况下http协议使用80端口,https协议443端口.要实现http强制转https是非常简单的事,随便都可以找到很多方案. ...

  8. c#基础知识梳理(四)

    上期回顾 - https://www.cnblogs.com/liu-jinxin/p/10826971.html 一.类 当你定义一个类时,你定义了一个数据类型的蓝图.这实际上并没有定义任何的数据, ...

  9. Nginx与负载均衡

    Nginx,首先是一款轻量级的Web服务器,其特点是占有内存少,并发能力强,大厂用户有:百度.新浪.网易.腾讯等.其次,它是一款反向代理服务器:第三,它还是一款电子邮件(IMAP/POP3)代理服务器 ...

  10. ZROI17普及23-B星空题解--图的灵活转化

    题目链接 版权原因不予提供 分析 这题思路很妙啊,虽然已经算半个套路题(因为我太菜了) 将框视为点,若一个球能放在\(x\)或\(y\)框,则\(x,y\)连一条无向边.有一条非常显然的性质是:在联通 ...