[题解] P2513 [HAOI2009]逆序对数列
动态规划,卡常数
设\(F[X][Y]\)代表长度为\(X\)的序列,存在\(Y\)组逆序对的方案数量。
考虑\(F[X][i]\)向\(F[X+1][i]\)转移:
- 把数字\(X+1\)添加到序列的第\([1,X]\)号位置上,可以增加\([0,X]\)个逆序对。
- 注意逆序对的个数不能超过\(\frac{N(N-1)}{2}\),其中\(\text{N}\)代表序列长度。
注意效率问题。
参考代码
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <iostream>
#define GC getchar()
#define Min(X,Y) ((X)<(Y)?(X):(Y))
#define Clean(X,K) memset(X,K,sizeof(X))
#define re register
const int Maxn = 1005 , Maxk = 1005 , P = 10000;
int F[Maxn][Maxk] , N , K /*, S[Maxn][Maxk]*/ ;
using namespace std ;
int main () {
// freopen ("P2513.in" , "r" , stdin) ;
scanf ("%d%d" , &N , &K) ;
Clean (F , 0) , /*Clean (S , 0) ,*/ F[0][0] = /*S[0][0] = */1 ;
for (re int i = 0 ; i < N ; ++ i) {
re int E1 =Min ((i * (i - 1)) / 2 , K) ;
for (re int j = 0 ; j <= E1; ++ j) {
re int E2 = Min (K - j , i) ;
for (re int k = 0 ; k <= E2 ; ++ k) {
F[i + 1][j + k] += F[i][j] ;
while (F[i + 1][j + k] >= P) F[i + 1][j + k] -= P ;
}
}
}
printf ("%d\n" , F[N][K]) ;
fclose (stdin) , fclose (stdout) ;
return 0 ;
}
Thanks!
[题解] P2513 [HAOI2009]逆序对数列的更多相关文章
- P2513 [HAOI2009]逆序对数列
P2513 [HAOI2009]逆序对数列 题目描述 对于一个数列{ai},如果有iaj,那么我们称ai与aj为一对逆序对数.若对于任意一个由1~n自然数组成的数列,可以很容易求出有多少个逆序对数.那 ...
- 洛谷P2513 [HAOI2009]逆序对数列
P2513 [HAOI2009]逆序对数列 题目描述 对于一个数列{ai},如果有i<j且ai>aj,那么我们称ai与aj为一对逆序对数.若对于任意一个由1~n自然数组成的数列,可以很容易 ...
- 2431: [HAOI2009]逆序对数列
2431: [HAOI2009]逆序对数列 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 954 Solved: 548[Submit][Status ...
- bzoj2431:[HAOI2009]逆序对数列
单组数据比51nod的那道题还弱...而且连优化都不用了.. #include<cstdio> #include<cstring> #include<cctype> ...
- 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 ...
- bzoj千题计划153:bzoj2431: [HAOI2009]逆序对数列
http://www.lydsy.com/JudgeOnline/problem.php?id=2431 dp[i][j] 表示i的排列,有j个逆序对的方案数 加入i+1,此时i+1是排列中最大的数, ...
- BZOJ2431 HAOI2009 逆序对数列 【DP】*
BZOJ2431 HAOI2009 逆序对数列 Description 对于一个数列ai{a_i}ai,如果有i<j且ai>aja_i>a_jai>aj,那么我们称aia ...
- bzoj2431: [HAOI2009]逆序对数列(前缀和优化dp)
2431: [HAOI2009]逆序对数列 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 2312 Solved: 1330[Submit][Stat ...
- 题解【洛谷P2513/CJOJ1345】[HAOI2009]逆序对数列
P1345 - [HAOI2009]逆序对数列 Description 对于一个数列{ai},如果有i<j且ai>aj,那么我们称ai与aj为一对逆序对数.若对于任意一个由1~n自然数组成 ...
随机推荐
- bat脚本以管理员身份运行时,目录没有定位到当前目录问题的解决方法
我们时常使用bat脚本去处理一些事情,有事bat中的命令需要以管理员的身份运行,但是运行后文件的目录自动定位到了C:\Windows\system32下,而不再脚本所在的目录下. 这是我的文件目录,W ...
- 如何配置Open Live Writer程序以便更好的为博客服务
Open Live Writer的前身是Windows live Writer 即(WLW)是一个免费的桌面应用程序,您可以使用它轻松发布丰富的内容到您的网络日志.WLW最终版为Windows Liv ...
- CentOS7 使用firewalld打开关闭防火墙与端口
1.firewalld的基本使用 启动: systemctl start firewalld 关闭: systemctl stop firewalld 查看状态: systemctl status f ...
- Java数据结构和算法 - 栈和队列
Q: 栈.队列与数组的区别? A: 本篇主要涉及三种数据存储类型:栈.队列和优先级队列,它与数组主要有如下三个区别: A: (一)程序员工具 数组和其他的结构(栈.队列.链表.树等等)都适用于数据库应 ...
- python的进程与线程(三)
线程的锁 1.几个概念 讲起线程的锁,先要了解几个概念:什么是并行?什么是并发?什么是同步?什么是异步? 并发:是指系统具有处理多个任务(动作)的能力 并行:是指系 ...
- [截稿日期] 人机交互与普适计算方向的A、B类国际会议
CCF推荐的人机交互与普适计算方向的A.B类会议截稿日期 一.A类 序号 会议简称 会议全称 出版社 截稿日期 网址 1 CHI ACM Conference on Human Factors i ...
- springboot~环境搭建与Helloworld
转了,非转了 只是项目需要,从.net到java,以后可以学习java的思想把它应用到.net上来,让咱们的.net越来越强大,springbool是一个强大的框架,几乎有了你想要的所有功能模块,大叔 ...
- Docker系列之基础实践篇(上)
常用命令回顾 帮助命令 1.启动docker //启动 $ systemctl start docker 2.查看docker版本 $ docker version 3.查看安装的docker信息描述 ...
- GetTypes Unable to load one or more of the requested types
重新生成项目,更新反射类的dll文件
- JavaScript夯实基础系列(四):原型
在JavaScript中有六种数据类型:number.string.boolean.null.undefined以及对象,ES6加入了一种新的数据类型symbol.其中对象称为引用类型,其他数据类 ...