2010-11-17から1日間の記事一覧

SRM487 Div1 Easy(250), Div2 Medium(500) BunnyComputer

BunnyComputerk+1で割った余りが等しい時刻しか干渉しないので分けて考える。例の問題なら、3,1,2と1,5,6と4,9。グループの要素数が偶数ならすべてのpreferenceが得られる。奇数ならば奇数番目のpreferenceのうちどれか1つが得られない。 #include <vector> #includ</vector>…

SRM487

旅行中のため不参加。

Codeforces School Team Contest #2 H. Phone Number

Phone Number動的計画法。i番目の数字がjであるときi番目以降に何通りの電話番号があるかを記憶しておく。Masha自身の番号が生成可能なら-1。 d = [int(x) for x in raw_input()] n = len(d) T = [[0]*10 for x in range(n)] T[n-1] = [1]*10 for i in range…

Codeforces School Team Contest #2 E. Anfisa the Monkey

Anfisa the Monkey全てを同じ長さ、もしくは長さの差が1になるように切るのが最善。 k,a,b = map(int,raw_input().split()) t = raw_input() n = len(t) l = n/k if a<=l<=b-1 or a<=l<=b and n-k*l==0: for i in range(k*(l+1)-n): print t[:l] t = t[l:] …

Codeforces School Team Contest #2 D. Hyperdrive

Hyperdrive惑星を2つ経由する距離の最小値の半分。平方根の計算が重いので、なるべく減らすようにしたら通った。 #include <iostream> #include <vector> #include <cmath> using namespace std; double dist( vector<int> a, vector<int> b ) { return sqrt( pow((double)a[0]-b[0],2) + pow((</int></int></cmath></vector></iostream>…

Codeforces School Team Contest #2 C. Holidays

Holidays n,m = map(int,raw_input().split()) f = [0]*(n+1) for i in range(m): a,b = map(int,raw_input().split()) for j in range(a,b+1): f[j] += 1 for i in range(1,n+1): if f[i]!=1: print i, f[i] exit() print "OK"

Codeforces School Team Contest #2 B. Cola

ColaDPにするまでもない。 #include <iostream> using namespace std; int main() { int n, a, b, c; cin >> n >> a >> b >> c; int r = 0; for ( int i=0; i<=a; i+=2 ) for ( int j=0; j<=c; j++ ) { int k = n - i/2 - j*2; if ( 0 <= k && k <= b ) r++; } cout <<</iostream>…

SRM487 Div2 Hard(900) BunnyConverter

BunnyConverter逆から辿ればxが一意に定まる。900にしても簡単では? class BunnyConverter{public: int getMinimum( int n, int z, int start, int goal ) { int z3 = (long long)z * z % n * z % n; long long t = goal; for ( int i=0; i

SRM487 Div2 Easy(250) BunnyExamAfter

BunnyExamAfter #include <string> using namespace std; class BunnyExamAfter{public: int getMaximum( string black, string gray, string white ) { int N = (int)black.size(); int ans = 0; for ( int i=0; i</string>

SRM487 Div1 Medium(550) BunnyExam

BunnyExam -1となるのは、k=1で長さが2以上の場合、k=2でリンクの両端の偶奇が異なる場合、リンクの両端が接している場合。あとは接している答えが異なるようなリンクの割り当てが出来ない場合。ただしリンクの両眼が接しているリンクの端は高々4つなので、…