#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)
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)

该博客介绍了一个用于计算最大逆序对的算法,通过动态规划实现。代码中定义了二维数组dp和c来存储逆序对数量,初始化并输入数组后,遍历并计算指定范围内的逆序对总数。在主函数中,读取查询并输出结果。

637

被折叠的 条评论
为什么被折叠?



