题解:P11796 【MX-X9-T0】『GROI-R3』NaiLong

· · 题解

题意

一个由 0,1,2 组成的长度为 n 序列 a0 表示向后指,1 表示向前指,2 表示哪都不指。问位置 k 有没有被指。

思路

如果一个位置的前面是 0 或后面是 1 就说明被指到了,所以只需要判断 a_{k-1}=0a_{k+1}=1 即可。

还有一个坑点,就是 a_0a_{n+1}0,会影响 1n 位置的查询,需要把这两个位置赋成 2

AC Code

#include<bits/stdc++.h>
using namespace std;
int n,k,a[105];
int main(){
    cin>>n>>k;
    a[0]=a[n+1]=2;
    for(int i=1;i<=n;i++) cin>>a[i];
    if(a[k-1]==0||a[k+1]==1) puts("Yes");
    else puts("No");
    return 0;
}