Indeedなうの予選に参加。CとDでどちらも実装ミスでタイムロスしてしまった。
http://indeednow-qualb.contest.atcoder.jp/tasks/indeednow_2015_qualb_1
http://indeednow-qualb.contest.atcoder.jp/tasks/indeednow_2015_qualb_2
A - 高橋くんとマンハッタン
2次元座標上で隣接する格子点に移動できる場合、(x1,y1)から(x2,y2)を最短経路で結ぶと何個の格子点を通るか。
abs(x1-x2)+abs(y1-y2)+1を答えればよい。始点の分1追加される点に注意。
void solve() { int i,j,k,l,r,x,y; string s; cin>>x>>y>>i>>j; cout<<abs(x-i)+abs(y-j)+1<<endl; }
B - 高橋くんと文字列操作
文字列S,Tが与えられる。
Sを最小で何文字ローテートすればTと一致するか答えよ。
Sのサイズはさほど大きくないので、実際にローテートさせながら比較すればよい。
string S,T; int L; void solve() { int i,j,k,l,r,x,y; string s; cin>>S>>T; L=S.size(); if(S.size()==T.size()) { FOR(i,L) { if(S==T) { cout<<i<<endl; return; } S=S.substr(L-1)+S.substr(0,L-1); } } cout<<-1<<endl; }
まとめ
Bは幸いFAでした。