分析
简单排序题。
首先 Petya 可以通过跨过一个台阶和两个台阶保证不经过脏台阶,但是不可以通过跨过三个台阶来保证不经过脏台阶,所以只要看有没有连续的三个脏台阶即可。
同时,如果第一个台阶和最后一个台阶至少一个是脏台阶那么就不可以达成。
Accepted Code
/*Code By Manipula*/
#include <bits/stdc++.h>
using namespace std;
const int N = 3005;
int high[N], n, m, last = -1, sum = 1;
int main()
{
cin >> n >> m;
for (int i = 1; i <= m; i++)cin >> high[i];
sort(high + 1, high + m + 1);
if (high[1] == 1 || high[m] == n)return cout << "NO", 0;//特判
for (int i = 1; i <= m; i++)
{
if (high[i] != last + 1)sum = 1;
else if (++sum == 3)return cout << "NO", 0;
last = high[i];//更新上一个台阶高度
}
cout << "YES";
return 0;
}
最后,这道题建议评橙。
标签:台阶,int,题解,Petya,high,Staircases,LuoguCF362B From: https://www.cnblogs.com/Manipula/p/17774470.html