写在前面:
本人在队伍中担任翻译,所以我的题解会有原文对照翻译
题目:
样例:
input:
5
3
1 2 3
4
4 3 2 1
2
1 2
2
2 1
6
4 5 6 1 2 3
output:
0
2
0
1
1
分析:
为了让奇数逆序数组个数最多,就要让每个逆序数组长度最短,长度为2就行
所以方法为:
线性扫过去,遇到前一个数比后一个大的,cnt++,i++(直接略过这个数和下一个数)
最后输出cnt
ac code
# include <bits/stdc++.h>
using namespace std;
const int N = 300010;
int a[N];
void solve()
{
int n;
cin >> n;
for(int i = 0;i < n;i++)
cin >> a[i];
int cnt = 0;
for(int i = 0;i < n-1;i++)
{
if(a[i] > a[i+1])
{
cnt++;
i++;
}
}
cout << cnt << endl;
}
int main(void)
{
int t;
cin >> t;
while(t--)
solve();
}