hdoj5273最大逆序对
来源:互联网 发布:js无法删除cookie 编辑:程序博客网 时间:2024/06/16 13:45
#include <iostream>
using namespace std;
int a[1005];
int dp[1005][1005];//以第i数为最大数从i到j的之间的逆序数对
int c[1005][1005];//计算所有和
int N;
void init()
{
for (int i=0;i<N;++i)
{
for (int j=i+1;j<N;++j)
{
dp[i][j] = dp[i][j-1];
if (a[j]<a[i])
dp[i][j]++;
}
}
}
int main()
{
int Q;
scanf("%d %d",&N,&Q);
for(int i=0;i<N;++i)
scanf("%d",&a[i]);
init();
int L,R;
for (int i=0;i<Q;++i)
{
scanf("%d %d",&L,&R);
int ans = 0;
if(!c[L-1][R-1])//两次查询重复计算
for (int i=L-1;i<R-1;i++)
c[L-1][R-1]+=dp[i][R-1];
printf("%d\n",c[L-1][R-1]);
}
return 0;
}
using namespace std;
int a[1005];
int dp[1005][1005];//以第i数为最大数从i到j的之间的逆序数对
int c[1005][1005];//计算所有和
int N;
void init()
{
for (int i=0;i<N;++i)
{
for (int j=i+1;j<N;++j)
{
dp[i][j] = dp[i][j-1];
if (a[j]<a[i])
dp[i][j]++;
}
}
}
int main()
{
int Q;
scanf("%d %d",&N,&Q);
for(int i=0;i<N;++i)
scanf("%d",&a[i]);
init();
int L,R;
for (int i=0;i<Q;++i)
{
scanf("%d %d",&L,&R);
int ans = 0;
if(!c[L-1][R-1])//两次查询重复计算
for (int i=L-1;i<R-1;i++)
c[L-1][R-1]+=dp[i][R-1];
printf("%d\n",c[L-1][R-1]);
}
return 0;
}
0 0
- hdoj5273最大逆序对
- 逆序数 & 逆序对
- 逆序对
- 逆序对
- 逆序对
- 逆序对
- 逆序对
- 逆序对
- 逆序对
- 逆序对
- 逆序对
- 逆序对
- 逆序对
- 逆序对
- 逆序对
- 逆序对
- 逆序对
- 逆序对
- 雾里探花之计算机硬件及组成原理(前言)
- django1.7写一个MOOC管理系统(二:数据库设计)(2015.6.20)
- innodb_data_file_path
- php面向对象基础概念(多态)
- 黑马程序员——多文件(模块化)开发C程序的方法
- hdoj5273最大逆序对
- javascript学习笔记(一)--初识javascript
- Fisher vector学习笔记
- 旋转和缩放视图
- 编译Ogre1.8.1 for vs2010
- java基础—计算: 2012-3-17"到"2012-4-6"中间有多少天?
- 【BC#24 1002 HDOJ 5273】Dylans loves sequence
- 15HD_OJ——Max Sun
- Division