ABC339

ardririy
·

久々にE解けた。また3完かと焦ったけどなんとかなった...

A - TLD

後ろから見て、.が出てくるまでを出力

B - Langton's Takahashi

ちょっと実装で沼った(というかバグらせた)。

言われたままを実装すればOK。

C - Perfect Bus

初めの乗客を0人として、乗客数が一番少なくなったときの値(~0までの値になる)を記録しておく。乗客数が一番少なくなったときの人数を0人とすればそれが最初の乗客としてありえる最小の値なので、答えは

(初めの乗客を0人としたときの最後の乗客の人数) + (乗客数が一番少なくなったときの値の絶対値)

となる。

E - Smooth Subsequence

配列v[i]を、「(前から順に見ていって)iが最後となるような部分列の作り方のうち最大の長さ」とし、これに対してセグメントツリーを構築しておく。初めの要素はすべて0である。

さて、a[i]に対して、

v[a[i]] = [ a[i]-d, a[i]+d ]の最大値 + 1

で更新を行う(というかこれをするためのセグ木)。最後まで見終わったあと、vのうちの最大値が答えになる。