2012-07-21から1日間の記事一覧

ARC#006 D - アルファベット探し

アルファベット探し異なる文字が接することは無いので、接しているoを繋げていくと、文字ごとに分けられる。あとは文字ごとにAかBかCかを調べる。最左のピクセルと最右のピクセルの位置から何倍に拡大されているかがわかる。各文字はピクセル数が異なるので…

ARC#006 C - 積み重ね

積み重ね貪欲。置くことができて最も軽い箱の上に置くのが最善。ちなみに、Pythonには for a in A: XXX else: YYY という記法があって、ループを最後まで実行した(breakしなかった)場合にだけ、YYYが実行される。 T = [] for i in range(input()): x = inp…

ARC#006 B - あみだくじ

あみだくじ[0, 1, 2, 3, …, N]という配列を用意しておいて-が出てくる度に、その位置の要素を交換すれば良い。 N,L = map(int,raw_input().split()) T = range(N) for i in range(L): for j,x in enumerate(raw_input()[1::2]): if x=="-": T[j],T[j+1] = T[…

ARC#006 A - 宝くじ

宝くじ def r(): return map(int,raw_input().split()) E=r() B=input() L=r() t=len([x for x in L if x in E]) if t==6: print 1 elif t==5 and B in L: print 2 elif t==5: print 3 elif t==4: print 4 elif t==3: print 5 else: print 0

SRM550 Div2 Hard(1000) TopView

TopView文字aのx軸方向とy軸方向の範囲内に、文字bがあるならば、bはaの上にある。bがaの上にある場合に、aからbに辺を張ったグラフを作り、トポロジカルソートすると順番が得られる。 #include <string> #include <vector> using namespace std; // 辞書順最小になるように</vector></string>…

SRM550 Div2 Easy(250)

EasyConversionMachineoriginalWordをfinalWordに書き換えて、残り回数が偶数なら可能。 #include <string> using namespace std; class EasyConversionMachine{public: string isItPossible( string originalWord, string finalWord, int k ) { for ( int i=0; i<(i</string>…

SRM550 Div1 Medium(500) CheckerExpansion

CheckerExpansionこんな感じ。 ............ ............ ............ ............ ............ ............ .....B...... ....A.B..... ...B........ ..A.B....... .B...B...B.. A.B.A.B.A.B.パスカルの三角形 ............ ............ ............…

SRM550 Div1 Easy(300), Div2 Medium(550) RotatingBot

RotatingBot可能な動きなら、動く範囲は広くない。実際に動かして確かめる。 #include <vector> using namespace std; class RotatingBot{public: int minArea( vector <int> moves ) { int n = (int)moves.size(); int dx[] = { 1, 0, -1, 0 }; int dy[] = { 0, -1, 0, 1</int></vector>…

SRM550

Easy (300) 182.33 Medium (500) 321.82 Hard (850) 0 Challenge 0 結果 30位 2158→2242レッド復帰キタ━━━━━━(゚∀゚)━━━━━━ !!