2013-01-01から1年間の記事一覧

2013 TCO Round 1B

Easy (250) 246.02 Medium (500) 405.27 Hard (1000) 789.10 Challenge 0 結果 44位 2032→2083通過。全問を解けると気分が良い(・∀・)

2013 TCO Round 1A Medium(500) TheFrog

TheFrogXは最小なので、少なくとも1個のR[i]を通る。kを整数として、X=R[i]/kとなる。またXが1未満になることはない。そのようなXを列挙してpitに落ちないかを調べる。 #include <vector> using namespace std; class TheFrog{public: double getMinimum( int D, vec</vector>…

2013 TCO Round 1A Easy(250) HouseBuilding

HouseBuilding揃える高さを色々試してみれば良い。 #include <string> #include <vector> using namespace std; class HouseBuilding{public: int getMinimum( vector <string> area ) { int h = (int)area.size(); int w = (int)area[0].size(); int ans = w*h*10; for ( int i=0; i</string></vector></string>…

2013 TCO Round 1B Hard(1000) EllysReversals

EllysReversals許されている操作で何ができるかを考える。文字列の長さが奇数ならば最後の1文字を動かすことはできない。先頭から2文字1組に分けたときに、その2文字をバラすことはできない。先頭を経由すると、この組は自由な場所に動かすことはできるし、2…

SRM571

Easy (250) 225.76 Medium (500) 0 Hard (1000) 0 Challenge 0 結果 186位 2032→2032

ARC#012

A - 週末 週末 print{"Sunday":0,"Monday":5,"Tuesday":4,"Wednesday":3,"Thursday":2,"Friday":1,"Saturday":0}[raw_input()] B - アキレスと亀 アキレスと亀 N,va,vb,L = map(int,raw_input().split()) for i in range(N): L -= float(va-vb)*L/va print "…

SRM568 Div2 Hard(1000) ShuffleSort

ShuffleSort数字が最小のカードがa枚、それ以外のカードがb枚ある場合に、カードを1枚減らすのに必要なシャッフルの期待回数をcとすると、c=1+cb/(a+b)。よって、c=(a+b)/a。step 2を何回も繰り返すルールは、カードが減ったときにはstep 1を省略できると考…

SRM568 Div1 Easy(250) TheSimilarNumbers

TheSimilarNumbers class TheSimilarNumbers{public: int find( int lower, int upper ) { int ans = 0; for ( int i=lower; i<=upper; i=i*10+1 ) ans++; return ans; }};

SRM568 Div1 Easy(250), Div2 Medium(500) BallsSeparating

BallsSeparatingそれぞれの色のボールを集める箱を決めれば良い。問題の制約から各色1個以上はあるので、箱が3個未満なら-1。 #include <vector> using namespace std; class BallsSeparating{public: int minOperations( vector <int> red, vector <int> green, vector <int> blue </int></int></int></vector>…

SRM568

Easy (250) 237.24 Medium (500) 0 Hard (1000) 0 Challenge -25 結果 99位 1981→2030

SRM567

Easy (250) 195.87 Medium (500) 0 Hard (1000) 0 Challenge -25 結果 314位 2040→1981(´;ω;`)

SRM566 Div2 Easy(250) PenguinTiles

PenguinTiles #include <string> #include <vector> using namespace std; class PenguinTiles{public: int minMoves( vector <string> tiles ) { int h = (int)tiles.size(); int w = (int)tiles[0].size(); for ( int y=0; y</string></vector></string>

SRM566 Div1 Medium(500) PenguinEmperor

PenguinEmperor対称性より、街iから街jに到達する旅程の数と、街i+kから街j+kに到達する旅程の数は等しい。街の数をnとする。i日目とi+n日目は同じ動きをするので、街0から出発してn日後にそれぞれの街へ到達する旅程の数を覚えておけば、それを使って、n日…

SRM566 Div2 Medium(500) PenguinPals

PenguinPals最適なペンギンの組合わせがあったとすると、ペンギンの並びをどこか1箇所で切って直線にできる。ペンギンが直線に並んでいたとすると、最多の組数は動的計画法で求められる。各区間内のペンギンでの最多の組数を覚えておけばよい。 #include <string> #i</string>…

SRM566 Div1 Easy(250)

PenguinSledding道が交差する可能性が無いのは、 道が0本の場合 道が1本の場合 全ての道があるチェックポイントに繋がっている場合 3本の道が三角形になっている場合 #include <vector> using namespace std; class PenguinSledding{public: long long countDesigns(</vector>…

SRM566

Easy (250) 167.50 Medium (500) 0 Hard (1000) 0 Challenge 0 結果 202位 2047→2040(´・ω・`)