2012-08-01から1ヶ月間の記事一覧

SRM553 Div1 Easy(250) Suminator

Suminator試しに0にしてみて、wantedResultになるなら0。そうでない場合、1個の数字は高々1回しか結果に足されないので、-1の箇所が足されるかどうかを調べる。足されないならば、ここで得られた結果とwantedResultが等しくなければいけない。足される場合、…

SRM553

Easy (250) 198.29 Medium (500) 0 Hard (1000) 0 Challenge -25 結果 178位 2160→2121チャレンジミスorz

天下一プログラマコンテスト2012 予選B D - 大爆発

大爆発爆弾を置くy座標を決める(同じy座標に複数の爆弾を置くのもあり)と、そのように爆弾を置いて全ての壁を破壊するのに必要な爆弾の個数が求められる。そのy座標に空きが無ければ無理。それ以外の場合は、そのy座標以外にある壁を壊すのに爆弾が何個必…

天下一プログラマコンテスト2012 予選B C - 席が足りない

席が足りない社員の部分集合ごとに何席必要かを覚えておいて、動的計画法。その社員が1席を共有できるなら、1席。そうでないならば、部分集合を2個に分割したそれぞれの席数の和の、最小値。 #include <iostream> #include <cstdio> #include <vector> using namespace std; int countb</vector></cstdio></iostream>…

天下一プログラマコンテスト2012 予選B B - camel_case

camel_caseやるだけ。だが、面倒くさい。こういう問題を、正規表現とかを使って、すっきり解けるようになりたい。 import re c = raw_input() if c=="_"*len(c): print c exit(0) pre,suf = 0,0 while c[pre]=="_": pre+=1 while c[-suf-1]=="_": suf+=1 c =…

天下一プログラマコンテスト2012 予選B A - 孫子算経

孫子算経 a,b,c = map(int,raw_input().split()) for i in range(1,128): if i%3==a and i%5==b and i%7==c: print i

SRM552 Div1 Easy(250) FoxPaintingBalls

FoxPaintingBalls何通りに塗り方があるか、ではなく、何個の三角形が作れるか。N=3kもしくはN=3k+2ならば、それぞれの色は同数。N=3k+1の場合、1個多い1色がある。直接計算できるのかもしれないけど、二分探索した方が簡単だと思う。オーバフローに注意。 #i…

SRM552

何か忘れている気がすると思ったら、SRMだったか……。

SRM551 Div2 Hard(950) ColorfulCupcakesDivTwo

ColorfulCupcakesDivTwo動的計画法。現在の位置、最初の人のケーキの色、前の人のケーキの色、各色のケーキの残数、ごとに配り方の数を覚えておく。 #include <string> #include <vector> #include <algorithm> using namespace std; long long M = 1000000007; vector<vector<vector<int> > > memo[50][3][</vector<vector<int></algorithm></vector></string>…

SRM551 Div2 Easy(250) ColorfulBricks

ColorfulBricks文字が1種類なら1、2種類なら2、それ以上なら0。 #include <string> #include <set> using namespace std; class ColorfulBricks{public: int countLayouts( string bricks ) { switch( set<char>(bricks.begin(),bricks.end()).size() ) { case 1: return 1; cas</char></set></string>…

SRM551 Div1 Medium(450) ColorfulWolves

ColorfulWolves色xから色yに変更可能にするコストは、colormap[x][0..y-1]の'Y'の個数。色0から色N-1への最短経路を求めれば良い。 #include <string> #include <vector> using namespace std; class ColorfulWolves{public: int getmin( vector <string> colormap ) { int INF = 999</string></vector></string>…

SRM551 Div1 Easy(250), Div2 Medium(500) ColorfulChocolates

ColorfulChocolatesspredを最大にするとき、その色のチョコのうち1個は動かさないことが可能。動かさないチョコを決めて、そのチョコの周りに同色のチョコを何個集められるかを調べる。あるチョコを持ってくるとき、交換回数は、そのチョコとの間にある違う…

SRM551

Easy (250) 0 Medium (450) 400.84 Hard (1000) 0 Challenge 0 結果 322位 2242→21612人しか解けなかった1000を考える前に、250を見直すべきだったorz