[P9253 [PA 2022] Ornitolog 2] 题解
题目
题目描述
给你一个长度为 \(n\) 的数列,求至少要修改多少个数才能让数列成为交替鹡鸰鸟鸣的音高序列。
思路
这道题有两种情况。
- 第一种是当前的数比左右两边的数都要小。
- 还有一种是当前的数比左右两边的数都要大。
1 1 1
\ / / \
0 0 0
所以我们用两个循环依次判断 \(n\) 为奇数和偶数的情况,每次比较当前数字左右两边的数字的大小就行了。
code
#include<bits/stdc++.h>
using namespace std;
int n,a[50005],b[50005];
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>b[i];
memcpy(a,b,sizeof(a));
int cnt=0;
for(int i=2;i<=n;i++)
if(i%2==1){if(a[i-1]<=a[i]) a[i]=-1000009,cnt++;}
else if(a[i-1]>=a[i]) a[i]=INT_MAX,cnt++;
memcpy(a,b,sizeof(a));
int cnt1=0;
for(int i=2;i<=n;i++)
if(i%2==0){if(a[i-1]<=a[i]) a[i]=-1000009,cnt1++;}
else if(a[i-1]>=a[i]) a[i]=INT_MAX,cnt1++;
cout<<min(cnt,cnt1)<<endl;
return 0;
}
本文来自博客园,作者:Arthur_Douglas,转载请注明原文链接:https://www.cnblogs.com/wenzhihao2023/p/17986430