C
为什么只补C,因为ab不用补,d补不出来(bushi
这个题自己做的时候想,这不是一眼题吗,结果wa了几次,最后发现还是菜了,题意是看看能不能把这个数组变成非递减的,也就是每一部分都不递减
思路:构造题一般是抓着一两个数使劲用,这个题也是,首先判断a[n]和a[n-1],若a[n]<a[n-1],不可能非递减输出-1,若a[n]>=a[n-1],且a[n]>=0,则可以更新前边的所有数,若a[n]<0,只能在整个数列都小于0并且递增才能满足非递减,否则输出-1
#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> PII;
const int N = 2e5 + 10;
int n, t;
int a[N];
int main()
{
cin >> t;
while (t --)
{
cin >> n;
for (int i = 1; i <= n; i++)
{
cin >> a[i];
}
if (a[n] < a[n - 1])
{
cout << "-1\n";
continue;
}
else if (a[n] < 0)
{
if (is_sorted(a + 1, a + n + 1))
{
cout << "0\n";
}
else
{
cout << "-1\n";
}
}
else
{
cout << n - 1 << '\n';
for (int i = 1; i = n - 2; i ++)
cout << i << ' ' << n - 1 << ' ' << n << '\n';
}
}
}