博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
bzoj千题计划153:bzoj2431: [HAOI2009]逆序对数列
阅读量:6331 次
发布时间:2019-06-22

本文共 1552 字,大约阅读时间需要 5 分钟。

 

dp[i][j] 表示i的排列,有j个逆序对的方案数

加入i+1,此时i+1是排列中最大的数,

所以放在i+1后面的所有数都会与i+1形成逆序对

转移方程:dp[i][j]=Σ dp[i-1][j-k]  k∈[0,min(j,i-1)]

前缀和优化

 

朴素的DP

#include
#include
using namespace std;const int mod=10000;int dp[1001][1001];int main(){ int n,k; scanf("%d%d",&n,&k); dp[1][0]=1; int m; for(int i=2;i<=n;++i) { dp[i][0]=1; m=min(i*(i-1)/2,k); for(int j=1;j<=m;++j) for(int k=0;k<=i-1 && k<=j;++k) dp[i][j]=(dp[i][j]+dp[i-1][j-k])%mod; } printf("%d",dp[n][k]);}

 

前缀和优化:

#include
#include
using namespace std;const int mod=10000;#define N 1001int dp[N][N],sum[N][N];int main(){ int n,k; scanf("%d%d",&n,&k); dp[1][0]=1; for(int i=0;i<=k;++i) sum[1][i]=1; int m; for(int i=2;i<=n;++i) { dp[i][0]=1; sum[i][0]=1; m=min(i*(i-1)/2,k); for(int j=1;j<=m;++j) { if(j
0) sum[i][j]-=mod; } for(int j=i*(i-1)/2+1;j<=k;++j) sum[i][j]=sum[i][j-1]; } printf("%d",dp[n][k]); }

 

2431: [HAOI2009]逆序对数列

Time Limit: 5 Sec  Memory Limit: 128 MB
Submit: 2444  Solved: 1422
[][][]

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;
100%的数据 n<=1000,k<=1000

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/8072263.html

你可能感兴趣的文章
通过实验取证ARP和免费ARP的工作原理
查看>>
51CTO的技术门诊谈OSSIM
查看>>
六年心路成长 —— 做自己
查看>>
Unix整理笔记——高级命令sed和awk——里程碑M10
查看>>
Linux系统详解 第六篇:系统的启动、登录、注销与开关机
查看>>
网络安全系列之二十六 EFS加密
查看>>
Redisbook学习笔记(1)sds
查看>>
Excel 2016新增函数之MaxIFS、MinIFS
查看>>
20110918—claim、ig、st、illuminate系列词汇
查看>>
2012过年回家:雷人的邮政大酒店
查看>>
Android NDK开发Crash错误定位
查看>>
SQL Server 2012 快速安装手册
查看>>
Configuring A New Replication Server System In Silent Mode
查看>>
大容量导入和导出数据 -- bcp实用工具
查看>>
思考驱动创新,创新驱动发展:基于假设(Assumption)的思考技术
查看>>
Exchange 全球通讯录导入基于POP3模式的Outlook
查看>>
HSRP(热备份协议)
查看>>
磁盘Mbr浅谈
查看>>
Kafka0.8性能测试报告
查看>>
提醒:涉及数据库这类的东西一定需要注意长短链接问题
查看>>