P9771

· · 题解

水题。

首先,我们要知道当 a_ia_{i+1} 被切在了一起,那么它们肯定就不会分开。

那么,基于排列的性质,我们可以得出:当 |a_i-a_{i-1}|>1 时,它们必须分开。

最终答案就为 |a_i-a_{i-1}|>1 的数量。

代码:

#include<bits/stdc++.h>
using namespace std;

int n,a[1000005],ans;

signed main(){
    ios::sync_with_stdio(0);
    cin.tie(nullptr);
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        if(i==1) continue;
        if(abs(a[i]-a[i-1])!=1) ans++;
    }
    cout<<ans;
    return 0;
}

Upd in 23.11.5:修了一些代码。