算法
(暴力枚举)
枚举每个角落取或者不取
时间复杂度 $O(16t)$
C++ 代码
#include<iostream>
using namespace std;
bool check(int n,int u,int r,int d,int l)
{
return u >= 0 && u <= n - 2 && r >= 0 && r <= n - 2 && d >= 0 && d <= n - 2 && l >= 0 && l <= n - 2;
}
void solve()
{
int n, u, r, d, l, uu, rr, dd, ll;
cin >> n >> u >> r >> d >> l;
uu = u, rr = r, dd = d, ll = l;
for (int i = 0; i <= 15;i++)
{
u = uu, r = rr, d = dd, l = ll;
for (int j = 0; j < 4; j++)
{
int f = i >> j & 1;
if(f)
{
if(j==0)
l--, u--;
if(j==1)
u--, r--;
if(j==2)
r--, d--;
if(j==3)
d--, l--;
}
}
if(check(n,u,r,d,l))
{
puts("YES");
return;
}
}
puts("NO");
}
int main()
{
int t;
cin >>t;
while(t--)
solve();
return 0;
}