AOJ 2178 - Problem D: Futon

問題リンク

解説

2色で同じ色に塗る場所と異なる色で塗る場所が指定されるので、それを満たすように塗ることができるかという問題です。

noshi91.hatenablog.com

そうすると、これとほぼ同じやり方で解くことができました。

実装も楽だね

提出コード

onlinejudge.u-aizu.ac.jp

Codeforces Round #514 (Div. 2) - D. Nature Reserve

問題リンク

解説

半径rに明らかに単調性があるので二分探索します。

以下、半径をrとします。この時、円の方程式は中心を(c,r)とすると、

(xc)2+(yr)2=r2

になります。

ある点(xi,yi)が円の内部にある条件は、

(xic)2+(yir)2r2

xir2(yir)2cxi+r2(yir)2

となります。

よって、全てのn区間を含むようなcが存在するかを調べると二部探索ができるので、計算量はO(nlogn)でできました

提出コード

codeforces.com

SoundHound Programming Contest 2018 Masters Tournament 本戦 - B - Neutralize

問題リンク

かなり典型だと思うのですが、詰まってる人が多かったので

解説

dp[i] := i番目まで見た時の最大値としましょう。

i番目を取るときは、

dp[i]max(dp[i],dp[i1]+b[i])

です。取らないときはi番目からK個以上を消すことができるので、

dp[i]max(dp[i],dp[j])  (0jiK)

です。よってi番目までのdpの最大値を管理しながらやれば、遷移はO(1)で求まるのでO(n)で求めることができました。

提出コード

atcoder.jp

Codeforces Round #664 (Div. 1) - B. Boboniu Walks on Graph

問題リンク

解説

cの組み合わせとして全て考えられるものを全探索します。

今回のグラフは出次数が全部1でかつ、全ての頂点でループを作らないといけないことから、入次数も全て1でないといけません。

もう少し突っ込むと入次数が2以上のが1つでも存在するとダメです。

よって、任意のci,cjの全てのペア(O(k4))を調べて、2以上の入次数が1つ以上あるかを予め前計算しておきます。

あとは全てのcの組み合わせでそのようなペアがあるかどうかをチェックします。

提出コード

codeforces.com