読者です 読者をやめる 読者になる 読者になる

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

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

Codeforces Round #226 (Div. 2)

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

A. Bear and Raspberry

ざっくりと大意

・熊は冬に備えてラズベリーを貯めておきたい。
・n日間分の蜂蜜の価格を事前に知っている。i日目の蜂蜜1バレルの価格はラズベリー\(x_i\)キロが必要である。
・ある日に蜂蜜を借りるらしいけど問題文がとても読みにくい。。

方針のようなもの

・たぶん、\(x_i\) - \(x_{i+1}\) の差分が最も大きいとこから更にCを引く。もし0以下になるなら何もしない。

n,c=map(int,raw_input().split())
l=map(int,raw_input().split())
ans=0
for i in range(n-1):
    chk=l[i]-l[i+1]-c
    ans=max(ans,chk)
print ans

B. Bear and Strings

ざっくりと大意

・bearが含まれている箇所の文字列を全て数え上げる。

方針のようなもの

・Noteの数え上げ方をみて素直に数える。

s=raw_input()
ans=0
w='bear'
cnt=s.count(w)
for i in range(cnt):
    ans+=(s.index(w)+1)*(len(s)-(s.index(w)+3))
    s=s[s.index(w)+1:]
print ans

数え上げはbearごとに左側が何通りの開始位置があるかと、右側が何通りの終了位置を取れるかの組合せを掛けたものになる。bearを1つ数えるごとに開始位置をindex+1の場所=bearのeの位置にずらす。これが最大限の左の位置でコレよりも左にずらすと既に数えた範囲と重複が出る。右の範囲は常に今見ているbearのrの位置から終端までの間が可能な組合せ。