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

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

Codeforces Round #300

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

A. Cutting Banner

ざっくりと大意

・バナーを作成するのに'CODEFORCES'が何か他の混ざってしまったのが修正して使えるかどうか??
・使えるものはこどふぉ,何か こど,何か,ふぉ 何か,こどふぉ の3種かな??

方針のようなもの

・両端を探す。

python

s=raw_input()
w='CODEFORCES'
chk=0
cnt=-9
for i in range(1,10):
    if w[:i]==s[:i] and w[i:]==s[cnt:]:
        chk=1
        break
    cnt+=1

if w==s[:10] or w==s[-10:]:
    chk=1

print 'YES' if chk else 'NO'

問題文の意味を掴むのに非常に苦戦した。。他に気になったこととして It is guaranteed that the word isn't word CODEFORCES. ってCODEFORCESという単語のみの入力がないことを保証してるのかな??確かに保証してくれないと色々不都合なのですけど。

B. Quasi Binary

ざっくりと大意

・入力で与えられた数を1,0のみで構成された数の総和になるように分解する??
・入力が9なら1が9個で和が9、32なら10,11,11で和が32になる。
・構成する数の出力は順不同らしいが個数は最小にならないといけないっぽい??

方針のようなもの

・引くことの出来る最大のモノを引こうとすると入力が20の時に11と1が9個とかになってしまうし、全パターン探そうとするのも大変そうなので他の方法を考える。。

python

n=raw_input()
l=[]
for i in n:
    l.append(int(i))
ans=[]
x=len(l)
while sum(l):
    chk=max(l)
    tmp=''
    for i in range(x):
        if l[i]==chk:
            l[i]-=1
            tmp+='1'
        else:
            tmp+='0'
    ans.append(int(tmp))
print len(ans)
print ' '.join(map(str,ans))

最初は問題の意味を分かってなくて全部1で出力したり、最大のモノを引いても最善でないことに気づいてなくて無駄にWA。その後にWAになったケースでこどふぉ側の解の出力を見てたら各桁で最大値のとこに1を立てた数を引いていけば出来そうなことに気づいて何とかAC。