巧妙地利用位运算枚举状态
#include<iostream> #include<cstdio> #include<cstring> #include<cmath> typedef long long ll; #define pos(i,a,b) for(int i=(a);i<=(b);i++) const int Max=100010; const int inf=0x7f7f7f7f; using namespace std; int n,t,u,l,d,r; bool f() { for(int i=0;i<(1<<4);i++) { int u1=u,l1=l,r1=r,d1=d; if(i&1) u1--,l1--; if(i&2) u1--,r1--; if(i&4) r1--,d1--; if(i&8) d1--,l1--; if(u1<0||l1<0||r1<0||d1<0) continue; if(u1<=n-2&&r1<=n-2&&l1<=n-2&&d1<=n-2) return true; } return false; } int main() { cin>>t; while(t--) { cin>>n; cin>>u>>r>>d>>l; if(f()) puts("yes"); else puts("no"); } return 0; }