SRM446 Div2 詳細

250

n以下でlowerBound桁からupperBound桁までの正の整数の個数を求める。苦手なジャンルだが、たかが250なので
223.49

500

展開してしまえば単純な繰り返しだけ。
414.11

1000

ハノイの塔っぽいけどディスクが3種類だけで、重ねる順番に制限なし。それぞれ別々のpegに移動させる。少なくともJavaだとBFSでは遅すぎて無理。A*を使ったがHeuristicsを正しく設定できずアウト。
Failed System Test

終了後に正しく動くやつもちゃんと作りました。一番遅いTestCase58で348 ms.

Challenge

500でJavaの+=の仕様をちゃんと理解していない人がいたので撃墜。

direction += 90 % 360;

これは意味ない。
+50.00

Challengeで見逃したもの

int c=0;
while(Integer.toString(c).length() < lowerbound )
c++;

0が入ってしまう。あとTLEにできそう。

if(b==1) bInt = 0;
if(b==2) bInt = 10;
if(b==3) bInt = 100;

0が入ってしまう。

u = (u+dx[w]+3) % 3;
v = (u+dy[w]+3) % 3;

タイポ。

String[] cube1 = {"RED","GREEN","RED"};
String[] cube2 = {"GREEN","BLUE","GREEN"};
String[][] cube ={cube1,cube2,cube1};

BとGが逆。

よく見ていればこんなに落とせたのか。

結果

1000以外はスピード勝負だったので、687.6 で28位。レートが、1181 -> 1284 で、次回からDiv1に返り咲き。Div2はゆとり。