君はまるで砂漠に咲く、一輪の花。

僕はその花に引き寄せられる蝶。

Codeforces Round #329 (Div.2)

はい。
http://codeforces.com/contest/593

A. 2Char

ざっくりと大意

・n行の複数の文字列、1つ1つの文字列は1000文字は超えないものが与えられる。
・それらの文字列をいくつか選択して2文字以内で最長になる文字数はいくつか??

方針のようなもの

・文字を確認する。3種以上の文字を含む文字列は捨てていいかな?

python

n=int(raw_input())
l=[]
ans=0
for i in range(n):
    w=list(raw_input())
    if len(set(w))<3:
        w.sort()
        l.append(w)
for i in range(26):
    for j in range(i,26):
        tmp=0
        x,y=chr(i+97),chr(j+97)
        for k in l:
            if x==y:
                if k[0]==k[-1]==x:
                    tmp+=len(k)
            else:
                chk=[x,y]
                if k[0] in chk and k[-1] in chk:
                    tmp+=len(k)
        ans=max(ans,tmp)
print ans

書くのがすごい面倒だった。set型にして文字種が3種類以上なものは捨てた。使う文字候補はaのみ、aとb、bのみ...という感じにした。aのみ使う場合は文字列の先頭と末尾がaであるなら文字列長を加算した。aとbの場合は文字列がaのみ、bのみ、aとbのいずれも有効になるようにすることに気をつけて加算する。

B. Anton and Lines

ざっくりと大意

・n件の入力でy = \(k_i\) と y = x + \(b_i\) の1次関数のグラフがある。
・それらのグラフが \(x_1\) と \(x_2\) の内で交点を持つか??

方針のようなもの

・あとで
なにかy = 1とかが複数発生するんだが。。i行目の入力はペアにして異なる入力行のグラフを交差しないといけないのかな??