bzoj千题计划153:bzoj2431: [HAOI2009]逆序对数列
http://www.lydsy.com/JudgeOnline/problem.php?id=2431
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<cstdio> #include<algorithm>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<cstdio> #include<algorithm>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<min(j,i-1)+1) dp[i][j]=sum[i-1][j];else dp[i][j]=sum[i-1][j]-sum[i-1][j-min(j,i-1)-1];if(dp[i][j]<0) dp[i][j]+=mod;sum[i][j]=sum[i][j-1]+dp[i][j];if(sum[i][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
[Submit][Status][Discuss]
Description
Input
第一行为两个整数n,k。
Output
写入一个整数,表示符合条件的数列个数,由于这个数可能很大,你只需输出该数对10000求余数后的结果。
Sample Input
Sample Output
样例说明:
下列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
bzoj千题计划153:bzoj2431: [HAOI2009]逆序对数列相关推荐
- BZOJ 2431: [HAOI2009]逆序对数列【DP】
2431: [HAOI2009]逆序对数列 Time Limit: 5 Sec Memory Limit: 128 MB Description 对于一个数列aiai,如果有i<ji<j且 ...
- bzoj2431:[HAOI2009]逆序对数列
单组数据比51nod的那道题还弱...而且连优化都不用了.. #include<cstdio> #include<cstring> #include<cctype> ...
- bzoj 2431: [HAOI2009]逆序对数列
2431: [HAOI2009]逆序对数列 Time Limit: 5 Sec Memory Limit: 128 MB Submit: 2190 Solved: 1262 [Submit][St ...
- 洛谷 P2513 [HAOI2009]逆序对数列
题目描述 对于一个数列{ai},如果有i<j且ai>aj,那么我们称ai与aj为一对逆序对数.若对于任意一个由1~n自然数组成的数列,可以很容易求出有多少个逆序对数.那么逆序对数为k的这样 ...
- 【洛谷 P2513】 [HAOI2009]逆序对数列(DP)
题目链接 这种求方案数的题一般都是\(dp\)吧. 注意到范围里\(k\)和\(n\)的范围一样大,\(k\)是完全可以更大的,到\(n\)的平方级别,所以这暗示了我们要把\(k\)写到状态里. \( ...
- BZOJ 2150. 部落战争(最小路径覆盖问题)【BZOJ千题计划】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 刷题就图一乐 题目链接 https://hydro.ac/d/bzoj/p/2150 是 hydro ...
- BZOJ 2151 种树(可反悔贪心,链表)【BZOJ千题计划】就图一乐
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/2151 是 hydro 的 BZOJ ...
- BZOJ 1799 [Ahoi2009] self 同类分布(数位DP)【BZOJ千题计划(quexin】
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 题目链接 https://hydro.ac/d/bzoj/p/1799(样例时限设置有问题,应该为 2 ...
- bzoj千题计划143:bzoj1935: [Shoi2007]Tree 园丁的烦恼
http://www.lydsy.com/JudgeOnline/problem.php?id=1935 二维偏序问题 排序x,离散化树状数组维护y #include<cstdio> #i ...
最新文章
- 掌握 需求过程阅读笔记06
- CentOS系统dig和nslookup的安装
- React,Redux,React-redux的错综复杂关系
- 原文:我的数据库学习“曲线”
- android意图传递参数返回结果(六)
- 谈自由,ASP.NET Core才是未来?
- 前端学习(498):水平居中布局得第一种方式
- sublime text3安装插件 emmet
- 一个apply的实例
- 信息学奥赛C++语言:for_求和
- Springboot01创建第一个程序
- 会议报到和撒离时间算会期_【NKMUN2021】城市会议新模式:让心动成为可能
- 浙江大学PTA 数据结构 习题2.2 数组循环左移 (20 分)
- 用DirectX Audio和DirectShow播放声音和音乐(3)
- 你真的理解机器学习中偏差 - 方差之间的权衡吗?
- 不用软件直接查询QQ好友的IP地址(二) 通过 Ping 得知对方是否联网在线(与QQ是否上线无关)
- 循环冗余校验码(CRC码)
- 【配电网重构】基于粒子群算法实现最小化功率损耗的配电网重构附matlab代码
- 关于服务端的FIN_WAIT2
- 报错:npm ERR code EPERM
热门文章
- 数数塔 NBUT - 1083
- 信息学奥赛一本通(C++)在线评测系统——基础(一)C++语言—— 1058:求一元二次方程
- 百练2757:最长上升子序列
- 【机器视觉】 HDevelop语言基础(六)-错误处理
- 【Qt】2D绘图之窗口-视口转换
- 【ARM】异常产生指令
- Css标题中图片居中,图片居中:任意图片在div里的上下垂直都居中!
- h2 不能访问localhost_个人学习系列 - Spring Boot 整合 H2
- crontab/ntpdate——时间同步
- Linux系统下如何查看及修改文件读写权限