突然发现这题有点意思,直接枚举,时间复杂度是O(1)
doge
code
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cctype>
#include <cstring>
using namespace std;
inline int read(){
int x = 0, op = 1; char ch = getchar();
while (!isdigit(ch)){ if (ch == '-') op = -1; ch = getchar();}
while (isdigit(ch)){x=(x<<1)+(x<<3)+(ch^48), ch = getchar();}
return x * op;
}
void solve() {
int n = read();
int u = read(), r = read(), d = read(), l = read();
int uu = u, rr = r, dd = d, ll = l;
if (u > 0 && r > 0) u--, r--;
if (r > 0 && d > 0) r--, d--;
if (d > 0 && l > 0) d--, l--;
if (l > 0 && u > 0) l--, u--;
if (u <= n - 2 && r <= n - 2 &&
d <= n - 2 && l <= n - 2){
printf("YES\n");
return;
}
u = uu, r = rr, d = dd, l = ll;
if (r > 0 && d > 0) r--, d--;
if (d > 0 && l > 0) d--, l--;
if (l > 0 && u > 0) l--, u--;
if (u > 0 && r > 0) u--, r--;
if (u <= n - 2 && r <= n - 2 &&
d <= n - 2 && l <= n - 2){
printf("YES\n");
return;
}
u = uu, r = rr, d = dd, l = ll;
if (d > 0 && l > 0) d--, l--;
if (l > 0 && u > 0) l--, u--;
if (u > 0 && r > 0) u--, r--;
if (r > 0 && d > 0) r--, d--;
if (u <= n - 2 && r <= n - 2 &&
d <= n - 2 && l <= n - 2){
printf("YES\n");
return;
}
u = uu, r = rr, d = dd, l = ll;
if (l > 0 && u > 0) l--, u--;
if (u > 0 && r > 0) u--, r--;
if (r > 0 && d > 0) r--, d--;
if (d > 0 && l > 0) d--, l--;
if (u <= n - 2 && r <= n - 2 &&
d <= n - 2 && l <= n - 2){
printf("YES\n");
return;
}
printf("NO\n");
}
int main() {
int cases = read();
while (cases--){
solve();
}
return 0;
}