|http://www.topcoder.com/stat?c=problem_statement&pm=8183コーナーケースに注意して場合分け。(Practice)2本目。Overflowしそうなのでループで書く実装もらうDPをループで書くのに慣れてなくてしばらく戸惑う・・・メモ化再帰で書けるなら直感的にかけて好きなのにサンプル通った最大ケースでチェック。|http://www.topcoder.com/stat?c=problem_statement&pm=8415方針を検討うーむまず、サンプルが理解出来ない例えばsample3。これ挿入が9回と削除が2回必要で、どう考えても4回の操作でできるはずがないのだが問題文に戻ってみる。理解できなくて悩むあっ複数回の挿入・削除・変更をまとめて1回と数えるのかsample3なら{12,13}{12,13,1,1}{12,13,1,1,1,1,1,1}{12,13,1,1,1,1,1,1,1,1,1}{1,1,1,1,1,1,1,1,1}で4回そうと分かれば話は簡単。余分なものを増やしたほうが得する場合はあるのだろうか逆に、必要なものを削ったほうが得する場合はあるのだろうかとりあえずない気がするのでそのケースは考えないでおくサンプル通った。操作について考える余計なことをすると、余計なことをした分の埋め合わせ操作が必要になる気がするなぁということで多分今のコードで大丈夫だ。(Practice)2完ならず。|http://www.topcoder.com/stat?c=problem_statement&pm=8319方針を検討とりあえず、dx,dy進むのにかかる手数を前計算してしまおう実装BFSで実装。書くいや待て、壁があるからそう単純にはできないやはり、(a,b)から(c,d)に進む最小手数を全部計算する必要が有りそうだ。最大サイズは10なので十分間に合うだろう。書いてしまったBFSの部分を使いまわす境界判定に番兵用意したいけど、最大2マス進めるし配列番号の扱いも面倒になりそうなので、愚直にif文で判定することにしたできた。コーナーケース確認して提出。同じノードを2回使ってしまっていることに気づく。フローじゃ解けないいやそもそもフローなんて高等なもの使わなくていい気がする。一つの点からは高々一つの点にしかいかないんだし・・・しばらく唸って時間切れ。第二問(550点)カウンター296947。