bzoj 2431 简单dp/递推
来源:互联网 发布:淘宝申请账号注册 编辑:程序博客网 时间:2024/06/08 18:42
题意:对于一个1~n的全排列,逆序对数为k的排列有几个
对于一个已经排好的1~i-1的排列,我们插入数i,可以贡献[0,i-1]个逆序对
所以第1~i的逆序对为m的排列可以由1~i-1的逆序对为[m-i+1,m]的排列插入数i形成
令f[i,j]表示1~i的全排列中逆序对数为j的排列总数
得出关系(方程):f[i,j]=sigma(f[i-1,j-k]) (0<=k<=i-1)
时间复杂度为O(n^3)
然后很显然f[i,j]是由f[i-1]的一段连续的区间和得来,那么我们对f[i-1,j]维护一个前缀和sum[j]即可优化为O(n^2)
const mo=10000;var f :array[0..1010,0..1010] of longint; n,m :longint; i,j :longint; sum :array[-1..1010] of longint;function max(a,b:longint):longint;begin if a<b then exit(b) else exit(a);end;begin read(n,m); for i:=1 to n do f[i,0]:=1; for i:=2 to n do begin for j:=0 to m do sum[j]:=sum[j-1]+f[i-1,j]; for j:=1 to m do f[i,j]:=(sum[j]-sum[max(-1,j-i)]+mo) mod mo; end; writeln(f[n,m]);end.——by Eirlys
0 0
- bzoj 2431 简单dp/递推
- poj 1157 简单递推dp
- 简单dp之递推(3)--hdu4489
- hdu 5965(dp递推,简单题)
- BZOJ-4300 绝世好(蛋疼)题 DP(递推)
- [BZOJ 1925][SDOI 2010] 地精部落 DP/递推
- bzoj 1609 简单dp
- Timus Online Judge1009---K-based Numbers(简单递推dp)
- HD 2048 数塔 DP(简单递推)
- 简单dp之递推(2)--ZOJ 3747
- BZOJ 1426 概率/期望DP神题 手推概率DP
- hdu1438 dp递推
- poj3786(DP,递推)
- hdu4489 dp+递推
- hdu5375 dp+递推
- hdu5286 dp+递推
- 期望dp递推
- 【dp】递推 zoj3747
- JAVA之序列化
- 8大排序算法
- 今有7对数字:两个1,两个2,两个3,...两个7,把它们排成一行。 要求,两个1间有1个其它数字,两个2间有2个其它数字,以此类推,两个7之间有7个其它数字。如下就是一个符合要求的排列:
- bzoj1001: [BeiJing2006]狼抓兔子
- spojGSS1 线段树维护区间和最大值
- bzoj 2431 简单dp/递推
- 《Head First Python》 第九章 ——sqlite数据库路径的配置问题
- 第45篇一对多实现(二)及array_filter及 array_flip及array_intersect
- bzoj 2982: combination (Lucas定理)
- Python web环境搭建 2017-02-15
- 303. Range Sum Query - Immutable
- codeforces #396
- C#的一些编码处理
- 阅读摘录 —— 给年青数学人的信