C

为什么只补C,因为ab不用补,d补不出来(bushi

原题链接

58945-hbveehfwqye.png

这个题自己做的时候想,这不是一眼题吗,结果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';
        }
    }
}
最后修改:2022 年 03 月 30 日
如果觉得我的文章对你有用,请随意赞赏