これまた解が短い。
https://codeforces.com/contest/1817/problem/D
問題
奇数Nが与えられる。
2*Nのグリッドが与えられる。
(1,0),(1,N/2),(1,N-1)は固定マスであり、(1,1)-(1,N-2)には動く四角いコマが載っている。
グリッドを上下左右に傾けると、コマがその方向に動く。
K番目のコマを左上マスに持っていく手順を求めよ。
解法
KがN/2以上かどうかで処理を変える。
"RDLU"や"LDRULU"を繰り返すと、左半分または右半分をrotateできるので、これをうまく使っていこう。
ll N,K; void solve() { int i,j,k,l,r,x,y; string s; cin>>N>>K; string R; if(K<N/2) { hoge: while(K>1) { R+="LDRULU"; K--; } R+="L"; } else if(K==N/2) { R+="DL"; } else { while(K<N-2) { R+="RDLU"; K++; } FOR(i,N) R+="LDLU"; R+="RDL"; } cout<<R<<endl; }
まとめ
考察メインの問題。