预计是个大工程,慢慢补吧
M 不难想象构造000011111这样的序列即可,求一下0的最大值与1的最大值,加一起大于n不符合答案
#includeusing namespace std; int main() { int t; cin>>t; while(t--){ int n,m; cin>>n>>m;int ma=0;int mb=0; for(int i=1;i<=m;i++){ int a,b; cin>>a>>b; ma=max(a,ma); mb=max(b,mb); } if(ma+mb>n){ printf("IMPOSSIBLEn"); continue; } for(int i=1;i<=ma;i++){ printf("R"); } for(int i=ma+1;i<=n;i++)printf("W"); printf("n"); } }
O 考虑把一个平面的情况离散化一下,映照在一维为r,二维为度数的二维数组上
然后这个需要注意一下细节,考场其实想到了,代码能力低下,细节问题没考虑清楚
#import#define endl 'n' using namespace std; int n,t,x,y,z,a[24][360],b[24][360],w[24][360]; char c; string s; void dfs(int x,int y) { if(w[x][y])return; if(x>19) { s="YES"; return; } w[x][y]=1; if(x&&!a[x-1][y])dfs(x-1,y); if(!a[x][y])dfs(x+1,y); if(!b[x][y])dfs(x,(y+359)%360); if(!b[x][(y+1)%360])dfs(x,(y+1)%360); }//b[x][y]=0 cong x y-1 dao x y int main() { ios::sync_with_stdio(0); cin.tie(0); for(cin>>t;t--;) { for(cin>>n;n--;) { cin>>c>>x>>y>>z; if(c=='C') { for(;y!=z;) { a[x-1][y]=1; ++y%=360; } }//a 从x-1到x if(c=='S') { for(;x



