思路
看数据范围时能发现,这 \(N\) 啥用也没有,因为 \(A+B+C+D=N-1\)。
首先,\(B\),\(D\) 为 \(0\) 且 \(A\),\(C\) 为 \(0\) 的情况是不可能有的,因为既然有 XX
和 YY
字符串,那么一定会至少组成一个 XY
或 YX
,输出 No
;
然后,\(\left|B-D\right|\le1\) 才可以,因为构造两个 XY
一定会出现一个 YX
,YX
同理,当两个 \(\left|B-D\right|>1\) 时,XY
或 YX
一定会超过所需的值,输出 No
;
其余情况输出 Yes
就可以了。
代码
#include<iostream>
#include<cmath>
using namespace std;
int main()
{
int n,a,b,c,d;
cin>>n>>a>>b>>c>>d;
if(abs(b-c)>=2||(b==0&&c==0&&a>0&&d>0)) cout<<"No";
else cout<<"Yes";
return 0;
}