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;
}
0 0
原创粉丝点击