[P9253 [PA 2022] Ornitolog 2] 题解

题目

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;
}
posted @ 2024-01-25 10:09  Arthur_Douglas  阅读(12)  评论(0编辑  收藏  举报