TopCoder

TCO13 Round1B

Easy: 2人組みを作る。1組の能力は2人の能力の合計。 一人ひとりの能力の配列が与えられるので、一番能力が高いペアと低いペアとの能力差の最小値を求めよ。一番能力が高い奴は一番能力が低い奴とペアを組むべき。 ソートしてそれぞれに求めて最大値-最小…

SRM561Div2

Mid: 以前本番で解けなかったので復習 制約が n 制約が n #include <vector> #include <algorithm> #include <iostream> #include <string> using namespace std; class ICPCBalloons { public: int minRepaintings(vector <int> Count, string Size, vector <int> AC) { int res=1<<30; int M=0,L=0; vector<int></int></int></int></string></iostream></algorithm></vector>…

SRM568Div2

Mid: 箱が何個かあって、i番目の箱には赤いボールがR[i]個、緑のボールがG[i]個、青いボールがB[i]個入っている。 それぞれの箱で、1色のボールのみ入っている状態にするために、必要なボールの移動回数を求める。 これも本番で解けなかったorz..まず箱が2以…

SRM567Div2

Mid: SSR(A,B) = (√A,√B)^2 という関数があって、1SSR(A,B)が整数となるものの数を求める。 本番で解けなかった。SSR(A,B) = (√A,√B)^2 = A^2 + B^2 + 2*√(AB) より、√(AB)の値が整数なら条件を満たす。例えばA=2に固定した時 √2 * √2、 √2 * √8、 √2 * √18…

SRM556Div2

Medium: グラフと、各頂点の値が渡されるので、スタート地点からグラフを移動し、値をXORしていった時に得られる最大値を求める問題。 同じノードを複数回訪れる事も可能。無向グラフなら a->b->c->b->a という風に来た道を戻れば任意の値を使えるので、到達…

SRM554Div2

Easy 制約が小さいので全通り試す。 交互に置くので、タワーを建設できるかどうかは、使うブロックの数の差が1以下で判定。 テンプレが長くて減点をくらう。 #include <cstdio> #include <cstdlib> #include <cmath> #include <climits> #include <cfloat> #include <map> #include <utility> #include <set> #include <iostream> #i</iostream></set></utility></map></cfloat></climits></cmath></cstdlib></cstdio>…

SRM531

div2-mid めもめも #include<iostream> #include<algorithm> using namespace std; class NoRepeatPlaylist { public: int numPlaylists(int N, int M, int P) { long long dp[105][105] = {0}; dp[0][0] = 1; for(int i=1; i<=P; ++i) { for(int j=1;j<=N;++j) { dp[i][j] += ( d</algorithm></iostream>…