Codeforces Round #343 (Div.2)
はい。
http://codeforces.com/contest/629
A. Far Relative’s Birthday Cake
ざっくりと大意
・Doorの誕生日をn * nの大きさのケーキで祝う。
・同じ行か、列にあるチョコレート(C)のペアの数。
Python2
def pscl(num,l=[1]): for i in range(num): l = map(lambda x,y:x+y,[0]+l,l+[0]) return l n=int(raw_input()) d={i:0 for i in range(n)} ans=chk=0 for i in range(n): s=raw_input() t=s.count('C') if t>1: ans+=pscl(t)[2] for a,j in enumerate(s): if j=='C': d[a]+=1 for i in d: if d[i]>1: ans+=pscl(d[i])[2] print ans
パスカルの三角形でnCrを求めるようなテンプレを組み込んでたから使ったけども選ぶのは必ず2つ、nC2なので別に使う必要なかった。
B. Far Relative’s Problem
ざっくりと大意
・Doorはn人の友人から誕生日をお祝いされる。M,Fは男性、女性の識別でa日からb日までが参加可能日??
・誕生日会には男性が女性を連れてきて一緒に参加する??最大の参加人数がいくつか??
Python2
n=int(raw_input()) f=[0]*368 m=[0]*368 for i in range(n): x,a,b=map(str,raw_input().split()) if x=='F': f[int(a)]+=1 f[int(b)+1]-=1 else: m[int(a)]+=1 m[int(b)+1]-=1 ans=chk=0 f2=m2=0 for i in range(368): f2+=f[i] m2+=m[i] ans=max(ans,min(f2,m2)*2) print ans
男性、女性を別々に数列を用意して可能日の開始で+1、最終日の次の日に-1で可能な期間を管理できる。1日目から見ていって小さい方の値が参加可能な人数。人数と言っても男女ペア参加なので2倍にする。366日目まで確認してその間の最大人数を出力する。