日々drdrする人のメモ

今日も明日もdrdr

AtCoder: Tenka1 Programmer Contest 2019 - D問題: Three Colors

コンテスト中に解けなかった。だめだめだった。

atcoder.jp

問題概要

 {N}個の整数が与えられ、 {i}番目の数は {a_i}である。

各数について赤、青、緑の3色で塗り分けることを考える。
そして塗り分けた {N}個の数の中で、その色で塗られた整数の総和をそれぞれ {R, G, B}とする。

全ての塗り分け方の中で、辺の長さが {R, G, B}となる三角形が存在する塗り分け方は何通りあるかをmod 998244353で求めよ。

続きを読む

AtCoder: Mujin Programming Challenge 2018 - F問題: チーム分け

実際には少なく見積もれる計算量がなかなか慣れない。

atcoder.jp

問題概要

 {N}人をいくつかのチームに分ける。
この時、 {i}番目の人は {a_i}人以下のチームのみに所属できる。

この条件の元、 {N}人のチーム分けとして何通り考えられるかをMOD  {998244353}で求めよ。
(ここでは、人は区別するがチームは区別しない)

続きを読む

AtCoder: エクサウィザーズ2019 - E問題: Black or White

コンテスト中に解けなかった問題。思考力が足りなかった (終)
想定解法メモ。

atcoder.jp

問題概要

 {B}個の黒いチョコレートと {W}個の白いチョコレートがある。

黒と白を等確率で選び、選んだ色のチョコレートが存在すれば食べる、をチョコレートがなくなるまで繰り返す。

 {1 \le i \le B+W} について、 {i}番目に食べるチョコレートが黒である確率をmod  {10^9 + 7}で求めよ。

続きを読む

AtCoder: エクサウィザーズ2019 - D問題: Modulo Operations

これ解くのに1時間はかかりすぎた。反省回。
atcoder.jp

問題概要

 {N}個の整数からなる集合 {S}と整数 {X}が与えられる。

この集合 {S}に含まれる1つの整数 {y}を取り除き、整数 {X} {X} mod  {y}に書き換える。この操作を集合 {S}が空になるまでの {N}回行う。

集合 {S}の整数を取り除く順序は {N!}通り存在するが、全ての順序における最終的な整数 {X}の値の総和を {10^9 + 7}で割った余りで求めよ。

続きを読む

AtCoder Grand Contest 032 - D問題: Rotation Sort

コンテスト中に悩んで解けなかった。想定解法のメモ。
atcoder.jp

問題概要

 {1, ..., N}の順列 {p = (p_1, ..., p_N)}が与えられる。

この順列に対し、以下の操作を行える。

  • ある {l, r (1 \le l < r \le N)}を選び、 {(p_l, ..., p_r)}を一つ左にシフトする
    • コストは {A}かかる
  • ある {l, r (1 \le l < r \le N)}を選び、 {(p_l, ..., p_r)}を一つ右にシフトする
    • コストは {B}かかる

 {p}を昇順に並べるために必要な最小のコスト操作を求めよ。

続きを読む

AtCoder: 早稲田大学プログラミングコンテスト2019 - D問題: Choose Your Characters

コンテスト時間中に解いた。解法メモ。

atcoder.jp

問題概要

とあるアクションゲームにおいて、 {1, 2, ..., N}の番号が振られた {N}種類のキャラがいる。
これらのキャラには、対戦する際の有利不利、もしくは五分の関係がある。
(キャラ {i}がキャラ {j}に対し有利である場合は、必ずキャラ {j}はキャラ {i}に不利)
この有利不利の関係は {M}個与えられ、それ以外のキャラ同士の関係は五分となっている。

この時、以下を満たすような区間 {[L, R]}を選ぶことにした。

  • 相手が任意のキャラを選んでも、そのキャラに対し五分もしくは有利になるキャラ {i \in [L, R]}が1体以上存在する。(相手と同じキャラは除外して考える)

この区間 {[L, R]}の幅が最小となり、選べる同じ幅の中でも {L}が最小となる {L, R}を求めよ。

続きを読む