bzoj2431逆序对数列
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2431
很容易想到n^3的做法。就是前 i 个数用第 i 个数最多能 i - 1 个逆序对,所以 i - 1 个数中属于 j ~ j - i + 1 的值都能加到前 i 个数的状态上。
#include<iostream>
#include<cstdio>
#include<cstring>
const int N=,mod=;
int n,k,dp[N][N],sm[N];
int main()
{
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++)sm[i]=sm[i-]+i-;
dp[][]=;
for(int i=;i<=n;i++)
for(int j=;j<=k&&j<=sm[i];j++)
for(int l=j;l>=&&l>=j-i+;l--)
(dp[i][j]+=dp[i-][l])%=mod;
printf("%d",dp[n][k]);
return ;
}
对于 i - 1 用了一个前缀和一样的部分。可以优化掉这个循环。只需要在过程中维护一下sum。很像之前做过的某道题。
不过sum还能变成负数?这样也能算出正确答案?感觉有些奇怪。
#include<iostream>
#include<cstdio>
#include<cstring>
const int N=,mod=;
int n,k,dp[N][N],sm[N],s[N];
int main()
{
scanf("%d%d",&n,&k);
dp[][]=;
for(int i=;i<=n;i++)
{
int sum=;
for(int j=;j<=k;j++)
{
(sum+=dp[i-][j])%=mod;
if(j>=i)sum=((sum-dp[i-][j-i])%mod+mod)%mod;
dp[i][j]=sum;
}
}
printf("%d",dp[n][k]);
return ;
}
bzoj2431逆序对数列的更多相关文章
- bzoj2431逆序对数列——递推
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2431 考虑新加入一个数i,根据放的位置不同,可以产生0~i-1个新逆序对: 所以f[i][j ...
- 【BZOJ2431】逆序对数列(动态规划)
[BZOJ2431]逆序对数列(动态规划) 题面 Description 对于一个数列{ai},如果有i<j且ai>aj,那么我们称ai与aj为一对逆序对数.若对于任意一个由1~n自然数组 ...
- BZOJ2431 HAOI2009 逆序对数列 【DP】*
BZOJ2431 HAOI2009 逆序对数列 Description 对于一个数列ai{a_i}ai,如果有i<j且ai>aja_i>a_jai>aj,那么我们称aia ...
- bzoj2431:[HAOI2009]逆序对数列
单组数据比51nod的那道题还弱...而且连优化都不用了.. #include<cstdio> #include<cstring> #include<cctype> ...
- 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)
2431: [HAOI2009]逆序对数列 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 2312 Solved: 1330[Submit][Stat ...
- 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 ...
- 2431: [HAOI2009]逆序对数列
2431: [HAOI2009]逆序对数列 Time Limit: 5 Sec Memory Limit: 128 MBSubmit: 954 Solved: 548[Submit][Status ...
- P2513 [HAOI2009]逆序对数列
P2513 [HAOI2009]逆序对数列 题目描述 对于一个数列{ai},如果有iaj,那么我们称ai与aj为一对逆序对数.若对于任意一个由1~n自然数组成的数列,可以很容易求出有多少个逆序对数.那 ...
随机推荐
- 项目中使用protobuf 3.0
protocol buffer从3.0 原生的compiler支持c++,Java,Python,Go,Ruby,JavaNano,JavaScript,Objective-C,C#,PHP这篇文章作 ...
- Python笔记 #12# Dictionary & Pandas: Object Creation
Document of Dictionaries 10 Minutes to pandas tutorialspoint import pandas as pd data = [['Alex',10] ...
- Sublime Text 3图标更改
Sublime Text 3图标更改 步骤: 1.下载ico图标 2.然后更改图标 注意:重点讲解下,如何将png文件转换为ico图标: 网络上单独找sublime text 3的ico图标比较不好找 ...
- 20145325张梓靖 《Java程序设计》第2周学习总结
20145325张梓靖 <Java程序设计>第2周学习总结 教材学习内容总结 整数 short 2字节,int 4字节,long 8字节 字节 byte 1字节 浮点数 float 4字节 ...
- ZooKeeper增加Observer部署模式提高性能(转)
除了Leader和Follow模式之外,还有第三种模式:Observer模式. Observer:在不伤害写性能的情况下扩展ZooKeeper. 虽然通过Client直接连接到ZooKeeper集群的 ...
- HBuilder 获取通话记录 (Android)
代码: Date.prototype.Format = function (fmt) { var o = { , //月份 "d+": this.getDate(), //日 == ...
- NOI导刊2009 提高一
zzh大佬给我说导刊的题全是普及难度,然而我..觉得有两道题是提高的 LocalMaxima 题目解析 对于\(i\)这个数,它要想成为LocalMaxima,比它大的要全部放到最后去,比它小的想怎么 ...
- 在MyEclise中使用自己安装的tomcat
·将Tomcat配置到MyEclipse中 1.在MyEclipse中打开Window子选项Preferences: 2.在Preferences面板中,点击左边选项中的MyEclipse,找到Ser ...
- 定义 S4 类
S3 类仅用一个字符向量表示,与之不同的是,S4 类要求对类和方法有正式定义.为了定义一个 S4 类,我们需要调用 setClass( ),并提供一种类成员的表示,这种表示被称为字段(slots).通 ...
- VC6_预编译头
1.去掉 使用预编译头"stdafx.h" VC6 --> Project --> Settings.. --> C/C++选项卡 --> "Ca ...