AIM Tech Round 3 (Div.2)
はい。
http://codeforces.com/contest/709
A. Juicer
ざっくりと大意
・Kolyaはオレンジジュースを作ろうとしている。
・オレンジはn個あって、大きさは\(a_i\)である。
・大きさbを越えないオレンジを1から順にジューサーに入れる。越える大きさのオレンジは無視する。
・使ったオレンジがdより多くなったらカスを廃棄する、廃棄はオレンジを使い切った後でも行う。
Python2
n,b,d=map(int,raw_input().split()) l=map(int,raw_input().split()) ans=chk=w=0 for i in l: if i<=b: chk+=i if chk>d: ans+=1 chk=0 print ans
解法が難しいというよりは問題文から作成と廃棄ルールを理解するのが難しいと思う。というか今でもわかってるのか不明。解答も他の人の提出を見てですし。 コードの内容からするとbより大きいオレンジは無視、それ以外は使う。使った量がdを越えたら廃棄を1回行う。という感じっぽい気がする。
B. Checkpoints
ざっくりと大意
・あとで
C. Letters Cyclic Shift
ざっくりと大意
・文字列sの空ではない最小の部分を選んで、z->y->x...->b->a->zのルールで文字を置換して辞書順最小のものを作る。
・codeforcesなら全部置換したものが最小になる、abacabaなら2文字目のbだけを置換するのが最小になる。
Python2
s=list(raw_input()) ans=chk=0 if s.count('a')==len(s): s[-1]='z' else: for i in range(len(s)): tmp=ord(s[i])-ord('a') if tmp>0: s[i]=chr(ord(s[i])-1) chk=1 elif chk==1: break print ''.join(s)
太字で強調してまで「exactly one non-empty substring」を置換する必要があると言っているので文字列sが全てaで辞書順最小でも置換をしなければならない。a->zの置換をしてより辞書順が最小なのは末尾1文字のみをzにする場合。a->zだけ例外にして処理。そうではない文字列はより先頭側に近いa以外の文字列からaが出現するか末尾までを置換する。