コンテンツへスキップ

リーダーは誰②

—2025/05/02

今日は雨が降り、昨日ほど気温が上がりません。

昨日のAtcoder問題について、引き続き書きたいと思います。

問題の詳細を昨日の記事にご参照ください。「誰がリーダーになる」

賢いの方もう既に分かったと思いますが、この問題の解き方がそんなに難しくありません。

以下の図をご覧ください。

図のように、2番目と3番目の人に注目してください。この二人それぞれリーダーになれば、全員の立つ方向を変える必要がありません、皆が彼に向いているからです。

2番目の人と3番目の人の共通点があります、それは

自分より前に立つ人は東に向いている、自分より後ろに立つ人は西に向いているということです。

それを見つければ、解決方法が決められます。

自分より前に立つ人は東向きでなければ、回転する必要があるので、カウントする、

自分より後ろに立つ人は西向きでなければ、回転する必要があるので、カウントする。

以上の合計数値は、全員の回転回数になります。

ここでは、実装する際、ちょっと気をつけなくちゃいけないところがありまして、最大回数10⁵あるので、2重ループ処理を避けるため、累積和知識を用いて、1重ループ処理で実装することです。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA