小红定义一个数组为好数组当且仅当这个数组至少存在一个长度为3的非降序子数组。 小红可以进行多次操作,每次操作可以修改数组中的一个元素。小红想知道至少需要操作几次才可以把这个数组变成不是好数组。
区块链毕设网qklbishe.com为您提供问题的解答
小红定义一个数组为好数组当且仅当这个数组至少存在一个长度为3的非降序子数组。
小红可以进行多次操作,每次操作可以修改数组中的一个元素。小红想知道至少需要操作几次才可以把这个数组变成不是好数组。
数学思维,跟算法没太大关系,一个非递减串长度为n,第一次至少从第三位数开始改,后续每两个数改一次即可
#include <iostream> #include <vector> using namespace std; int main() { int n; cin >> n; vector<int> myl(n); for (int i = 0; i < n; i++) { cin >> myl[i]; } int ans = 0; int i = 0; while (i < n) { int ori = i; int len = 1; while (++i && i < n) { if (myl[ori] <= myl[i]) { len++; ori = i; } else break; } if(len>=3)ans += (len-1) / 2; } cout << ans; } // 64 位输出请用 printf("%lld")
15:21
以上就是关于问题小红定义一个数组为好数组当且仅当这个数组至少存在一个长度为3的非降序子数组。
小红可以进行多次操作,每次操作可以修改数组中的一个元素。小红想知道至少需要操作几次才可以把这个数组变成不是好数组。的答案
欢迎关注区块链毕设网-
web3一级市场套利打新赚钱空投教程
区块链NFT链游项目方科学家脚本开发培训