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

SRM544 Div2 Easy(250) ElectionFraudDiv2

ElectionFraudDiv2Div2 Easyがどんどん難しくなっている……。i番目の有権者の票数をxiとすると、max(p-0.5,0)≦100xi/10000<p+0.5 が成り立つ。最小値と最大値を足し合わせて、10000がその中に入っていればNO。 #include <vector> #include <numeric> using namespace std; cl</numeric></vector>…

SRM544 Div1 Medium(500) FlipGame

FlipGame貪欲に裏返していく。ある行の最右の1の右隣は必ず通らなければいけない。 #include <string> #include <vector> using namespace std; class FlipGame{public: int minOperations( vector <string> board ) { int w = (int)board[0].size(); int h = (int)board.size(); int</string></vector></string>…

SRM544 Div1 Easy(275) ElectionFraudDiv1

ElectionFraudDiv1有権者数を決めて、それぞれの候補者の最小と最大の票数を足し合わせて、有権者数がその間にあれば良い。証明は分からないけど、答えは高々201らしい。票数は負にならないことに注意。 #include <vector> using namespace std; class ElectionFraud</vector>…

SRM544

Easy (275) 0 Medium (500) 379.15 Hard (900) 0 Challenge 0 結果 183位 2221→2177イエローに戻った(´;ω;`) クロトワ「みじけぇ夢だったなぁ」

SRM543 Div2 Easy(250) EllysTSP

EllysTSP #include <string> #include <algorithm> using namespace std; class EllysTSP{public: int getMax( string p ) { return p.length()-max(abs(count(p.begin(),p.end(),'V')-count(p.begin(),p.end(),'C'))-1,0); }};</algorithm></string>

SRM543 Div1 Medium(500) EllysRivers

EllysRivers普通に動的計画法をするとO(N2length)で間に合わない。終了間際になっても解けなかったので、自信は無かったけど、島iのj番目の港に最短時間で行くときに通る島i-1の港は、島iのj-1番目の港に最短時間で行くときに通る島i-1の港かその両隣、と仮…

SRM543 Div1 Easy(250), Div2 Medium(500) EllysXors

EllysXorsビットごとに1を数える。 long long f(long long X) { long long A = 0; for ( int i=0; i<60; i++ ) { long long n = (X>>(i+1))<<i; if (X>>i&1) n += (X&((1LL<</i;>

SRM543

Easy (250) 183.78 Medium (500) 206.08 Hard (1000) 0 Challenge 0 結果 96位 2196→2221赤コーダーになれた━━━━━━(゚∀゚)━━━━━━ !!4年とちょっと、78試合。長かった(´;ω;`)ブワッ

TCO2012 Round2B Medium(550) HeavyBooks

HeavyBooksなるべく重い本から順に相手に押しつけた方が得。Tomekが最初に持ってきた本を仮定して、シミュレートすると最後にTomekとWojtekそれぞれが何番目に重い本を持っているかが分かる。あとはTomekが得するように最初に図書館から持ってくる本を決めれ…

TCO2012 Round2B Easy(300)

BlurredDartboard読めない点数を狙う場合、矢が均等に当たるようにするのが最善。Pを読めない点数で割った余りについて、読めない点数に矢を何本当てるかを変えて最小回数を求める。 #include <vector> #include <algorithm> #include <numeric> using namespace std; class BlurredDartb</numeric></algorithm></vector>…

TCO2012 Round2B

Easy (300) 214.98 Medium (550) 270.27 Hard (900) 0 Challenge 0 結果 98位 2135→2196レートがあと4足りない……(´・ω・`)

SRM542 Div2 Easy(250) WorkingRabbits

WorkingRabbits #include <string> #include <vector> using namespace std; class WorkingRabbits{public: double getEfficiency( vector <string> profit ) { int n = (int)profit.size(); int s = 0; int c = 0; for ( int i=0; i</string></vector></string>

SRM542 Div1 Easy(250), Div2 Medium(500) PatrolRoute

PatrolRoutex軸方向で最小の点と最大の点の差をwとすると、x軸方向の移動距離は2wで、各点のx座標の選び方は(w-1)*(X-w)通り。y軸方向も同様。各点のx軸方向の位置とy軸方向の位置を決めると、その組み合わせは6通り。 class PatrolRoute{public: int countR…

SRM542

Easy (250) 205.13 Medium (500) 0 Hard (1000) 0 Challenge 0 結果 205.13点 68位 2118→2135

AtCoder Regular Contest #002 C - コマンド入力

コマンド入力ボタンの全ての割り当て方を試す。AAB……という系列、L=AA、R=ABだった場合に、LよりもRを使った方が入力回数が少なくなるということはないので、先頭から貪欲にLとRを使えば良い。 input() c=raw_input() a=len(c) for L1 in "ABXY": for L2 in …

AtCoder Regular Contest #002 B - 割り切れる日付

割り切れる日付strftimeは年の範囲に制限があるらしい。 from datetime import *; Y,M,D=map(int,raw_input().split("/")) t=datetime(Y,M,D); while t.year%(t.month*t.day):t+=timedelta(1); #print t.strftime("%Y/%d/%m") print "%04d/%02d/%02d"%(t.yea…

AtCoder Regular Contest #002 A - うるう年

うるう年 Y=input();print"YES"if Y%400==0 or Y%100!=0 and Y%4==0 else"NO"

AtCoder Regular Contest #002

A 1:36 B 33:34 RE 1回 C 17:23 D × 結果 41位ミスが痛いので、早解きに拘らず、丁寧に解こうorz