AtCoder AtCoder BC103 C: Modulo Summation 問題 解法 m mod ai が最大になるのは、mがaiの倍数-1の時で、余りはai-1になる。 よって、mがa1,a2,,,anの最小公倍数-1の時にf(m)は最大になる。 最大値を求めるだけなら最... 2018.07.22 AtCoder競技プログラミング
AtCoder AtCoder BC103 B: String Rotation 問題 解法 文字列の長さが最大100と短いため、全パターンを確かめて比較するだけでOK 実装 2018.07.22 AtCoder競技プログラミング
AtCoder AtCoder GC020 A: Digit Sum 2 問題 解法 各自がとるべき戦略を考えるにあたり、まずはどのような状態で勝敗が確定するかを考えます。 勝敗が確定するのは、以下のように片方が端っこに追いやられた状態で、次のターンがまわってくる場合です。 ... 2018.07.11 AtCoder競技プログラミング
AtCoder AtCoder BC098 C: Attention 問題 解法 ある人をリーダーに選んだ場合、 西から東に向きを変える人の数 = 選んだ人より西の人の内、西を向いている人の数 東から西に向きを変える人の数 = 選んだ人より東の人の内、東を向いている人の数 ... 2018.07.11 AtCoder競技プログラミング
AtCoder AtCoder BC098 B: Cut and Count 問題 解法 文字列のサイズが最大でも100なので、全ての切断箇所のパターンで「どちらにも含まれる文字」の種類を数え上げれば解けます。 Rubyの場合、配列の「&」をとると共通部分が求められるので、実装は以下... 2018.07.11 AtCoder競技プログラミング
AtCoder AtCoder BC097 D: Equals 問題 解法 最初、貪欲に操作をシミュレートして解こうと思ったのですが、組み合わせが果てしなくあることに気づき早々に断念。 例題の解き方を眺めているうちに、各操作のグルーピングがポイントであることに気づきまし... 2018.05.13 AtCoder競技プログラミング
AtCoder AtCoder BC097 C: K-th Substring 問題 解法 最初に問題を見たときは、長さ5000以下の文字列の部分文字列なんていっぱいあるし、これ本当に300点?って思ったのですが、Kが5以下に抑えられているので、高々Kまでの長さの部分文字列を全て列挙してしま... 2018.05.13 AtCoder競技プログラミング
AtCoder AtCoder BC097 B: Exponential 問題 解法 bpがX以下になる組み合わせについて考えます。 これはbについては1〜X、pについては2〜Xの組み合わせが考えられ、これは2重ループのO(N2)で求めることが出来ます。 ただし、pについて... 2018.05.13 AtCoder競技プログラミング
AtCoder AtCoder GC023 B: Find Symmetries 問題 解法 まず、初期状態で「よい盤面」なものについて考える。 例えば、N=3の場合、以下のような盤面が「よい盤面」である。 a b c b d e c e f これを右方向に1、下... 2018.05.01 AtCoder競技プログラミング
AtCoder AtCoder GC023 A: Zero-Sum Ranges 問題 解法 最初に問題を見て、これ本当に200点?って思うくらい悩んだ。 とりあえず、累積和をとってみる。 例えば、サイズ4の数列:{a1 a2 a3 a4}の累積和を考える。 S1 = a1 ... 2018.04.30 AtCoder競技プログラミング