2012-03-01から1ヶ月間の記事一覧
EllysJuiceプレイヤーの人数が高々8人なので、全ての並びを試せば良い。実装がけっこう面倒くさい。 #include <string> #include <vector> #include <set> #include <map> #include <algorithm> using namespace std; class EllysJuice{public: vector <string> getWinners( vector <string> players ) { int n = (</string></string></algorithm></map></set></vector></string>…
Easy (250) 219.39 Medium (500) 440.26 Hard (1000) 0 Challenge 0 結果 135位 1993→2022Mediumまでは調子が良かったけど、Hardが全然分からなかった。1個のライトに接続しているスイッチは高々2個という条件を見落としていた。こんなん解ける訳が無いだろ…
SkewedPerspectives連続した見えている黒いキューブの個数が全て偶数ならば、見えているとおりに積み上げれば良い。問題は、それが奇数個の場合。↓の左のように1個だけ隠す。奇数個の黒いキューブが地面に接している場合、黒いキューブが1個ならば無理だが、…
LeftOrRight?を全てLに置換したプログラムか、全てRに置換したプログラムが答え。 #include <string> using namespace std; int reach( string s ) { int p = 0; int r = 0; for ( int i=0; i<(int)s.length(); i++ ) { p += s[i]=='L' ? -1 : 1; r = max( r, abs(p)</string>…
TurtleSpyジグザグに進むと距離は短くなる。前進して、なるべく180°に近くなるように回転して、後退する。角度は整数で360通りしかないので、動的計画法により、回転可能な角度を求めることができる。 #include <sstream> #include <string> #include <vector> #include <cmath> using namesp</cmath></vector></string></sstream>…
EvenRoutex+yが偶数の点を偶、奇数の点を奇とする。偶の点が1個でもあるならば、スタート地点と各点を往復して、最後に偶の点に行けば、パリティを0にできる。また、偶の点が無いならば、最初の移動でパリティが1になり、その後どのように移動してもパリティ…
Easy (250) 213.53 Medium (450) 294.76 Hard (1050) 0 Challenge 0 結果 132位 1961→1993
PrinceXToastbookノード i から、prerequisite[i] に枝を張ると森になる。その森を辿って、あるトーストを p 番目に食べたときに、そのトーストと子孫のうち何枚を学習できるかを求める。 #include <vector> #include <numeric> using namespace std; vector<int> P; // 配列Sを返</int></numeric></vector>…
KingXNewBaby #include <string> using namespace std; class KingXNewBaby{public: string isValid( string name ) { int n = (int)name.length(); if ( n==8 ) { string v; for ( int i=0; i</string>
KingXMagicSpellsビットごとに分けて計算することができる。途中の計算はXORと移動だけ。平均も、例えばビットが1になる確率がそれぞれのビットで50%とすると、000=010 50%、111=710 50%でも、010=210 50%、101=510 50%でも平均は等しい。 #include <vector> using n</vector>…
KingXNewCurrencyXとYが題意を満たすことと、AもBもXp+Yqの形で表せることは、同値である。なぜなら、XとYが題意を満たせば当然AとBはXとYで表せるし、AとBがXとYで表せるならばAp+BqのAとBをそのXとYで置き換えれば良いから。XのみでAもBも表せるならば、Y…
Easy (275) 205.99 Medium (500) 0 Hard (925) 0 Challenge 0 結果 364位 1995→1961レートが下がる一方だ……(´・ω・`)
Cutウナギの長さが10kならば、k-1回切ってk本の長さ10のウナギが得られる。それ以外の場合は切った回数のウナギが得られる。長さが10の倍数で短いウナギから順に切っていけば良い。 #include <vector> #include <algorithm> using namespace std; bool cmp( int a, int b ) { re</algorithm></vector>…
FoxAndIntegers #include <vector> using namespace std; class FoxAndIntegers{public: vector <int> get( int AminusB, int BminusC, int AplusB, int BplusC ) { vector<int> ans; for ( int A=-100; A<=100; A++ ) for ( int B=-100; B<=100; B++ ) for ( int C=-100; C<=1</int></int></vector>…
FoxAndGCDLCMA=aG, B=bG とすると、aとbは互いに素で、L=abG, A+B=(a+b)Gである。互いに素で積がL/Gとなる2個の整数の和で、最小のものを返せば良い。 #include <algorithm> using namespace std; long long gcd(long long a,long long b) {long long t;if(a>b)t=a,a=b,</algorithm>…
Easy (250) 206.61 Medium (500) 0 Hard (1000) 0 Challenge 0 結果 263位 2010→1995250は互いに素という条件を見落としていて提出が遅くなったし、最後のexampleが無ければ落ちていた。500は解いたつもりが、そもそも解法が違ったらしい。正しく解けること…