SlideShare une entreprise Scribd logo
1  sur  57
Télécharger pour lire hors ligne
AtCoder Beginner Contest 006
解説
AtCoder株式会社 代表取締役
高橋 直大
2014/4/5 1
競技プログラミングを始める前に
• 競技プログラミングをやったことがない人へ
– まずはこっちのスライドを見よう!
– http://www.slideshare.net/chokudai/abc004
2014/4/5 2
©AtCoder Inc. All rights reserved. 3
A問題 世界のFIZZBUZZ
1. 問題概要
2. アルゴリズム
2014/4/5 3
A問題 問題概要
• 1ケタの数字Nが与えられる
• Nが3の倍数、または3が含まれるはYES、そうでない
ならNOと出力しなさい
2014/4/5 4
A問題 アルゴリズム
• 基本的なプログラムの流れ
– 標準入力から、必要な入力を受け取る
• 今回の場合は、nという1つの整数
– 問題で与えられた処理を行う
• 今回は、3で割り切れる、または、3を含むかを調べる
– 標準出力へ、答えを出力する
2014/4/5 5
A問題 アルゴリズム
• 入力
– 1つの数字を、標準入力から受け取る
• Cであれば、scanf(“%d”, &n); など
• C++であれば、cin >> n;
• 入力の受け取り方は、下記の練習問題に記載があります。
– http://practice.contest.atcoder.jp/tasks/practice_1
2014/4/5 6
A問題 アルゴリズム
• 整数nが、以下の条件を満たすかどうか判定する
– 3で割り切れるかどうか
– 文字3を含むかどうか
– これは、if文と、||などの論理演算子を組み合わせること
で表記できる。
• If((3で割り切れる) || (文字3を含む)) print(“YES”);
• もし条件を満たすのであればYES、満たさないのであ
ればNOを出力する
2014/4/5 7
A問題 アルゴリズム
• 3で割り切れるかどうか
– 余剰を計算する演算子を使用する
• 大抵の言語においては% たまにmod
– 7%3を計算すると、1が出てくる、みたいな使い方が出来る
– これが0になっているかどうか判定するだけ
• 3を含むかどうか
– そもそも、今回の問題では、nが1ケタ
– 3を含むnは、n=3の場合のみ
• これは、3で割り切れる数字でもあるので、上の条件に含まれる
• よって、考慮しなくても良い。
2014/4/5 8
A問題 アルゴリズム
• 3を含むかどうか
– もし、nが何桁もあった場合
• 13など、3の倍数でないが、3を含むnが存在する
– やり方は何通りか存在する
• nを文字列として持ち、文字3を含むか調べる
– Findなどの、文字列検索を行うアルゴリズムを使う
– Forループやforeachなどで1文字ずつ調べても良い
• 1ケタずつ整数として調べる。
– まず、%10を使い、1ケタ目の数字だけ取り出す
– 次に、それが3であれば終了し、そうでなければ、/10して次の桁に
移行する。
2014/4/5 9
A問題 アルゴリズム
• 1ケタずつ整数として調べる。
– まず、%10を使い、1ケタ目の数字だけ取り出す
– 次に、それが3であれば終了し、そうでなければ、/10して
次の桁に移行する。
– 1342 % 10 = 2 ←3でないので、次の値は10で割って134
– 134 % 10 = 4 ←3でないので、次の値は10で割って13
– 13 % 10 = 3 ←3なので終了
2014/4/5 10
A問題 アルゴリズム
• 出力
– 求めた答えを、標準出力より出力する。
– 言語によって違います。
• printf(“YES¥n”); (C)
• cout << “YES” << endl; (C++)
• System.out.println(“YES”); (Java)
• 各言語の標準出力は、下記の練習問題に記載があります。
– http://practice.contest.atcoder.jp/tasks/practice_1
2014/4/5 11
©AtCoder Inc. All rights reserved. 12
B問題 トリボナッチ数列
1. 問題概要
2. アルゴリズム
2014/4/5 12
B問題 問題概要
• 整数nが与えられる
• トリボナッチ数列の第n項を答えなさい
– ただし、数字が大きくなるので、10007で割った余りを出力
しなさい。
• トリボナッチ数列とは、3つ前の数字までを足した数
字が、次の数字になる数列の事を言います。
– 0,0,1,1,2,4,7,13,24…みたいなの
2014/4/5 13
B問題 アルゴリズム
• 入力
– 整数nを受け取る
• さっきと同じです!
2014/4/5 14
B問題 アルゴリズム
• 処理
– 4番目から順番に求める
• 1,2,3番目は、予めコンピュータに入力しておく。
– やり方は主に2通り
• 1つ前、2つ前、3つ前の数字を、変数に入れておく
– a = 0, b = 0, c = 1のような感じ
– 1巡したら、a = 0, b = 1, c = 1のようにローテーションさせる
• 過去の全ての結果を配列に確保してしまう。
– 入力が100万までなので、長さ100万の配列を確保する
– 計算するときは、ar[n] = ar[n-1] + ar[n-2] + ar[n-3]といった感じ
2014/4/5 15
B問題 アルゴリズム
• 注意点
– B問題の答えは、数字が非常に大きくなる!
• Int型やlong型では収まりません
– 答えるべきものは、10007で割った余り
– この時、途中の計算式でも、10007で割った余りを使って
良い
• 最後にだけ計算しようとすると、途中で桁溢れが起きてしまいま
す。
2014/4/5 16
B問題 アルゴリズム
• 出力
– A問題と同じく、答えを出力するだけ
– Print(ar[n])みたいな感じ
2014/4/5 17
B問題 アルゴリズム
• おまけ
– 再帰関数でやると、計算量が膨大になります。
• 動的計画法みたいにやりましょう。
• メモ化再帰でもOK
2014/4/5 18
©AtCoder Inc. All rights reserved. 19
C問題 スフィンクスのなぞなぞ
1. 問題概要
2. アルゴリズム
2014/4/5 19
C問題 問題概要
• スフィンクスがなぞなぞを出します。
• 「この街には人間が N 人いる。人間は、大人、老人、
赤ちゃんの 3 通りだ。
この街にいる人間の、足の数の合計は M 本で、大
人の足は 2 本、老人の足は 3 本、赤ちゃんの足
は 4 本と仮定した場合、存在する人間の組み合わ
せとしてあり得るものを1 つ答えよ。」
– 答えられないと留年する
• NとMが入力されるので、答えを返すプログラムを作
りなさい。
– 答えが存在しない場合は-1 -1 -1を出力する
2014/4/5 20
C問題 問題概要
• 制約
– 部分点1
• N<=100
• M<=500
– 部分点2
• N<=1500
• M<=7500
– 満点
• N<=100000
• M<=500000
2014/4/5 21
C問題 アルゴリズム
• N,Mに対して、
– N = a + b + c
– M = 2a + 3b + 4c
– a,b,c ≧ 0
• なお、大人の人数がa、老人の人数がb、赤ちゃんがcとする
• の連立方程式を解かなければならない?
2014/4/5 22
C問題 アルゴリズム 部分点1
• N≦100の時、a,b,cを全て調べることが可能
– a,b,c = {0,0,100}, {0,1,99}….{100,0,0}のように全チェック
• もしこれで、足の本数がMと一致していたら、それを出力
– 全てのa,b,cの組み合わせで条件を満たさなかった時は、
正しい組み合わせは存在しないので、-1 -1 -1を出力
2014/4/5 23
C問題 アルゴリズム 部分点2
• N≦1500の時、a,b,cを全て調べることが不可能?
– 高速に計算できる方法を考える
• a,bが決まった時、c = N – a – b
• これを使うと、やはり全列挙が可能となる。
– 同様に、それぞれの組み合わせに対して、足の本数が一
致する組み合わせが存在するか調べるだけ。
2014/4/5 24
C問題 アルゴリズム 満点解法
• 解法1 つるかめ算
– a,b,cのどれかを決めてしまう。
• 例えば、b=0としてみる。
– すると、M = 2*a + 4*c
• これはただのつるかめ算
– 大人、老人、子供のどれか1つの人数だけ全探索を行い、
残りの2つを、つるかめ算により求める。
• 人数が負になったり、整数にならない場合は失敗
– 成功する組み合わせがあったらそれを出力
– ダメだったら-1 -1 -1を出力
2014/4/5 25
C問題 アルゴリズム 満点解法
• 解法2 老人の数の固定
– 老人が2人いた場合
• 子供1、大人1に変換することが可能
– つまり、老人が2人以上いる組み合わせは、全て老人が1
人以下の組み合わせに変換することが出来る
– つまり、老人が0人いる場合と、1人いる場合だけ考えれ
ば良い!
– そこまで分かれば全探索すれば良い
2014/4/5 26
C問題 アルゴリズム 満点解法
• おまけ
– 解法1と解法2を組み合わせると、満点解法で解けます
– 老人を0,1の2パターンに固定する以外にも、O(1)で解け
る解き方はいくつか存在します。
• 回答が複数ありますが、偶奇さえきちんと合わせれば、大体つじ
つまを合わせられます。
– 回答が複数あるので、連立方程式ライブラリとかで解こう
とするのは非推奨です。
2014/4/5 27
©AtCoder Inc. All rights reserved. 28
D問題 トランプ挿入ソート
1. 問題概要
2. アルゴリズム
2014/4/5 28
D問題 問題概要
• 1~Nまでの数字が書かれたカードがN枚存在する
• 山札からカードを1枚抜き取り、任意の場所に挿入
することが可能
• 山札をソートしたい時に、並び替える必要のある最
小数を求めなさい
• 実は、多くのコンテストに出題されている、超典型問題です。
2014/4/5 29
D問題 問題概要
• 問題のイメージ
– 以下のようなカードが与えられる
– カードを抜いて入れ替える
2014/4/5 30
1 3 5 2 4 6
D問題 問題概要
• 問題のイメージ
– 以下のようなカードが与えられる
– カードを抜いて入れ替える
• これを繰り返してソートさせる
2014/4/5 31
1 3 5
2
4 6
D問題 問題概要
• 問題のイメージ
– 以下のようなカードが与えられる
– カードを抜いて入れ替える
• これを繰り返してソートさせる
– ソートが完了するまでの最小手数を出力する
• 今回の場合は2
2014/4/5 32
1 3 5
2 4
6
D問題 問題概要
• 制約
– 部分点1
• N≦16
– 部分点2
• N≦1000
– 満点
• N≦30000
2014/4/5 33
D問題 アルゴリズム
• 考察
– 全ての並び替えパターンは、n!通り存在する
• これを全て考えるのは不可能
– 何か工夫をしなければ、解くことは難しい
2014/4/5 34
D問題 アルゴリズム 部分点1
• 先ほどのサンプルでは、「2」と「4」のカードを動かす
ことになった。
2014/4/5 35
1 3 5
2 4
6
D問題 アルゴリズム 部分点1
• 先ほどのサンプルでは、「2」と「4」のカードを動かす
ことになった。
– 1個ずつ動かしたが、図のように一気に複数抜いて、一気
に複数差し込んでも良い。
2014/4/5 36
1 3 5
2 4
6
D問題 アルゴリズム 部分点1
• 先ほどのサンプルでは、「2」と「4」のカードを動かす
ことになった。
– 1個ずつ動かしたが、図のように一気に複数抜いて、一気
に複数差し込んでも良い。
– この時、差し込んでソートできる条件は、取り除いた列が
ソート済みになっていること
2014/4/5 37
1 3 5 6
D問題 アルゴリズム 部分点1
• つまり、「どのカードを残すか」を全探索することに
よって、その残されたカードがソート済みになってい
るかどうか調べれば良い。
– この組み合わせは、Nに対して2^N通りしか存在しない。
• Nが16程度であれば間に合う
• 2^N通りに対し、全列挙を行い、増加列になっている
ものの中で、最も残す数が多いものを調べれば良
い。
– ABC002 D問題「派閥」と同じ考え方
• 002のDと同じアルゴリズムが10点でごめんなさい><
2014/4/5 38
D問題 アルゴリズム 部分点1
• 2^n全列挙の仕方
– 深さ優先探索を使う
• 普通に1つずつ、使う使わないを判定する
• 自然な実装になりやすい?
– 整数のbitを用いた探索を使う
• ABC002と同様
• 時間がないので後で書いて再アップロードします><
2014/4/5 39
D問題 アルゴリズム 部分点2
• さらに計算を早くするには?
– 残す列がソート済みになっていれば良い、という点に着目
する
• 「どのように入れ替えるか」ではなく、「カードを抜い
てソートされた状態にするとき、残ったカードの数が
最大にする方法」を考える
2014/4/5 40
D問題 アルゴリズム 部分点2
• 増加列を求める方法
– 普通に深さ優先探索をすると前回と同じ
– 動的計画法を使おう!
• 左から順番に、「最後にそのカードを使った時の、最大の列の長
さはいくつか」を計算していく
• 最初は1
2014/4/5 41
1 3 5 2 4 6
1
D問題 アルゴリズム 部分点2
• 増加列を求める方法
– 普通に深さ優先探索をすると前回と同じ
– 動的計画法を使おう!
• 左から順番に、「最後にそのカードを使った時の、最大の列の長
さはいくつか」を計算していく
• 最初は1
• 次の値は、前の値を利用して、最大値から計算する
2014/4/5 42
1 3 5 2 4 6
1 2
D問題 アルゴリズム 部分点2
• 増加列を求める方法
– 普通に深さ優先探索をすると前回と同じ
– 動的計画法を使おう!
• 左から順番に、「最後にそのカードを使った時の、最大の列の長
さはいくつか」を計算していく
• 次の値は、前の値を利用して、最大値から計算する
2014/4/5 43
1 3 5 2 4 6
1 2 3 2 3
D問題 アルゴリズム 部分点2
• 計算量の考察
– 各カードを選ぶ部分がO(n)
– そのカードから前のカードの部分列の最大値を選ぶ部分
がO(n)
– 併せてO(n^2) 1000程度であれば計算可能となる。
2014/4/5 44
1 3 5 2 4 6
1 2 3 2 3
D問題 アルゴリズム 満点解法
• さらに計算を早くするには?
– データの持ち方を変えよう!
– ここまで出てきた中で、k枚の部分列が作れるもののうち、
もっともカードの値が小さいものを持つ
2014/4/5 45
1 3 5 2 4 6
増加列 0 1 2 3 4 5
カード -INF INF INF INF INF INF
D問題 アルゴリズム 満点解法
• さらに計算を早くするには?
– データの持ち方を変えよう!
– ここまで出てきた中で、k枚の部分列が作れるもののうち、
もっともカードの値が小さいものを持つ
2014/4/5 46
1 3 5 2 4 6
1
増加列 0 1 2 3 4 5
カード -INF 1 INF INF INF INF
D問題 アルゴリズム 満点解法
• さらに計算を早くするには?
– データの持ち方を変えよう!
– ここまで出てきた中で、k枚の部分列が作れるもののうち、
もっともカードの値が小さいものを持つ
2014/4/5 47
1 3 5 2 4 6
1 2
増加列 0 1 2 3 4 5
カード -INF 1 3 INF INF INF
D問題 アルゴリズム 満点解法
• さらに計算を早くするには?
– データの持ち方を変えよう!
– ここまで出てきた中で、k枚の部分列が作れるもののうち、
もっともカードの値が小さいものを持つ
2014/4/5 48
1 3 5 2 4 6
1 2 3
増加列 0 1 2 3 4 5
カード -INF 1 3 5 INF INF
D問題 アルゴリズム 満点解法
• さらに計算を早くするには?
– データの持ち方を変えよう!
– ここまで出てきた中で、k枚の部分列が作れるもののうち、
もっともカードの値が小さいものを持つ
2014/4/5 49
1 3 5 2 4 6
1 2 3 2
増加列 0 1 2 3 4 5
カード -INF 1 2 5 INF INF
D問題 アルゴリズム 満点解法
• さらに計算を早くするには?
– データの持ち方を変えよう!
– ここまで出てきた中で、k枚の部分列が作れるもののうち、
もっともカードの値が小さいものを持つ
2014/4/5 50
1 3 5 2 4 6
1 2 3 2 3
増加列 0 1 2 3 4 5
カード -INF 1 2 4 INF INF
D問題 アルゴリズム 満点解法
• さらに計算を早くするには?
– データの持ち方を変えよう!
– ここまで出てきた中で、k枚の部分列が作れるもののうち、
もっともカードの値が小さいものを持つ
2014/4/5 51
1 3 5 2 4 6
1 2 3 2 3
増加列 0 1 2 3 4 5
カード -INF 1 2 4 6 INF
4
D問題 アルゴリズム 満点解法
• 考察
– このカードの配列は、絶対に昇順になっている
• よって、足すべき部分は1か所しかなく、二分探索で求めることが
可能である
• 下図は、今見ているカードを3だとする
2014/4/5 52
増加列 0 1 2 3 4 5
カード -INF 1 2 4 6 INF
D問題 アルゴリズム 満点解法
• 考察
– このカードの配列は、絶対に昇順になっている
• よって、足すべき部分は1か所しかなく、二分探索で求めることが
可能である
• 下図は、今見ているカードを3だとする
2014/4/5 53
増加列 0 1 2 3 4 5
カード -INF 1 2 4 6 INF
D問題 アルゴリズム 満点解法
• 考察
– このカードの配列は、絶対に昇順になっている
• よって、足すべき部分は1か所しかなく、二分探索で求めることが
可能である
• 下図は、今見ているカードを3だとする
2014/4/6 54
増加列 0 1 2 3 4 5
カード -INF 1 2 4 6 INF
D問題 アルゴリズム 満点解法
• 考察
– このカードの配列は、絶対に昇順になっている
• よって、足すべき部分は1か所しかなく、二分探索で求めることが
可能である
• 下図は、今見ているカードを3だとする こんな感じで求まる
2014/4/6 55
増加列 0 1 2 3 4 5
カード -INF 1 2 4 6 INF
D問題 アルゴリズム 満点解法
• 考察
– このカードの配列は、絶対に昇順になっている
• よって、足すべき部分は1か所しかなく、二分探索で求めることが
可能である
– よって、計算量はO(nlogn)となる。
2014/4/5 56
増加列 0 1 2 3 4 5
カード -INF 1 2 4 6 INF
D問題 アルゴリズム
• おまけ
– 最長増加部分列(Longest Increasing Subsequence)と呼ば
れる有名なアルゴリズムです。
• 動的計画法に慣れていれば、知らなくても解ける問題ではありま
す。
2014/4/5 57

Contenu connexe

Tendances

AtCoder Beginner Contest 005 解説
AtCoder Beginner Contest 005 解説AtCoder Beginner Contest 005 解説
AtCoder Beginner Contest 005 解説AtCoder Inc.
 
AtCoder Regular Contest 035 解説
AtCoder Regular Contest 035 解説AtCoder Regular Contest 035 解説
AtCoder Regular Contest 035 解説AtCoder Inc.
 
AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説AtCoder Inc.
 
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説AtCoder Inc.
 
AtCoder Regular Contest 037 解説
AtCoder Regular Contest 037 解説AtCoder Regular Contest 037 解説
AtCoder Regular Contest 037 解説AtCoder Inc.
 
AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説AtCoder Inc.
 
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説AtCoder Inc.
 
AtCoder Beginner Contest 013 解説
AtCoder Beginner Contest 013 解説AtCoder Beginner Contest 013 解説
AtCoder Beginner Contest 013 解説AtCoder Inc.
 
AtCoder Beginner Contest 004 解説
AtCoder Beginner Contest 004 解説AtCoder Beginner Contest 004 解説
AtCoder Beginner Contest 004 解説AtCoder Inc.
 
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder Inc.
 
AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説AtCoder Inc.
 
AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説AtCoder Inc.
 
AtCoder Regular Contest 046
AtCoder Regular Contest 046AtCoder Regular Contest 046
AtCoder Regular Contest 046AtCoder Inc.
 
AtCoder Beginner Contest 016 解説
AtCoder Beginner Contest 016 解説AtCoder Beginner Contest 016 解説
AtCoder Beginner Contest 016 解説AtCoder Inc.
 
AtCoder Regular Contest 032 解説
AtCoder Regular Contest 032 解説AtCoder Regular Contest 032 解説
AtCoder Regular Contest 032 解説AtCoder Inc.
 
AtCoder Beginner Contest 011 解説
AtCoder Beginner Contest 011 解説AtCoder Beginner Contest 011 解説
AtCoder Beginner Contest 011 解説AtCoder Inc.
 
AtCoder Regular Contest 026 解説
AtCoder Regular Contest 026 解説AtCoder Regular Contest 026 解説
AtCoder Regular Contest 026 解説AtCoder Inc.
 
AtCoder Regular Contest 023 解説
AtCoder Regular Contest 023 解説AtCoder Regular Contest 023 解説
AtCoder Regular Contest 023 解説AtCoder Inc.
 
AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説AtCoder Inc.
 
AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説AtCoder Inc.
 

Tendances (20)

AtCoder Beginner Contest 005 解説
AtCoder Beginner Contest 005 解説AtCoder Beginner Contest 005 解説
AtCoder Beginner Contest 005 解説
 
AtCoder Regular Contest 035 解説
AtCoder Regular Contest 035 解説AtCoder Regular Contest 035 解説
AtCoder Regular Contest 035 解説
 
AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説
 
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説
 
AtCoder Regular Contest 037 解説
AtCoder Regular Contest 037 解説AtCoder Regular Contest 037 解説
AtCoder Regular Contest 037 解説
 
AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説
 
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説
 
AtCoder Beginner Contest 013 解説
AtCoder Beginner Contest 013 解説AtCoder Beginner Contest 013 解説
AtCoder Beginner Contest 013 解説
 
AtCoder Beginner Contest 004 解説
AtCoder Beginner Contest 004 解説AtCoder Beginner Contest 004 解説
AtCoder Beginner Contest 004 解説
 
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説
 
AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説
 
AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説
 
AtCoder Regular Contest 046
AtCoder Regular Contest 046AtCoder Regular Contest 046
AtCoder Regular Contest 046
 
AtCoder Beginner Contest 016 解説
AtCoder Beginner Contest 016 解説AtCoder Beginner Contest 016 解説
AtCoder Beginner Contest 016 解説
 
AtCoder Regular Contest 032 解説
AtCoder Regular Contest 032 解説AtCoder Regular Contest 032 解説
AtCoder Regular Contest 032 解説
 
AtCoder Beginner Contest 011 解説
AtCoder Beginner Contest 011 解説AtCoder Beginner Contest 011 解説
AtCoder Beginner Contest 011 解説
 
AtCoder Regular Contest 026 解説
AtCoder Regular Contest 026 解説AtCoder Regular Contest 026 解説
AtCoder Regular Contest 026 解説
 
AtCoder Regular Contest 023 解説
AtCoder Regular Contest 023 解説AtCoder Regular Contest 023 解説
AtCoder Regular Contest 023 解説
 
AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説
 
AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説
 

Similaire à AtCoder Beginner Contest 006 解説

Code Formula 予選B 解説
Code Formula 予選B 解説Code Formula 予選B 解説
Code Formula 予選B 解説AtCoder Inc.
 
競プロは人生の役に立つ!
競プロは人生の役に立つ!競プロは人生の役に立つ!
競プロは人生の役に立つ!Kensuke Otsuki
 
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)AtCoder Inc.
 
T82 aoitan あおいたんのパズルを数学しましょうか_修正版
T82 aoitan あおいたんのパズルを数学しましょうか_修正版T82 aoitan あおいたんのパズルを数学しましょうか_修正版
T82 aoitan あおいたんのパズルを数学しましょうか_修正版Masami Yabushita
 
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)Kensuke Otsuki
 
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうかわんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうかMasami Yabushita
 
AtCoder Beginner Contest 007 解説
AtCoder Beginner Contest 007 解説AtCoder Beginner Contest 007 解説
AtCoder Beginner Contest 007 解説AtCoder Inc.
 
第4回すくすく・スクラム TheKanbanGame
第4回すくすく・スクラム TheKanbanGame第4回すくすく・スクラム TheKanbanGame
第4回すくすく・スクラム TheKanbanGameKazumasa EBATA
 
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)AtCoder Inc.
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムTakuya Akiba
 
130323 slide all
130323 slide all130323 slide all
130323 slide allikea0064
 
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)AtCoder Inc.
 
NSEG第11回勉強会
NSEG第11回勉強会NSEG第11回勉強会
NSEG第11回勉強会ko ty
 
実践・最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)AtCoder Inc.
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化yosupo
 
20131222 第八回シェル芸勉強会問題集
20131222 第八回シェル芸勉強会問題集20131222 第八回シェル芸勉強会問題集
20131222 第八回シェル芸勉強会問題集Ryuichi Ueda
 
図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』Proktmr
 
Code Formula 2014 予選A 解説
Code Formula 2014 予選A 解説Code Formula 2014 予選A 解説
Code Formula 2014 予選A 解説AtCoder Inc.
 

Similaire à AtCoder Beginner Contest 006 解説 (20)

Code Formula 予選B 解説
Code Formula 予選B 解説Code Formula 予選B 解説
Code Formula 予選B 解説
 
競プロは人生の役に立つ!
競プロは人生の役に立つ!競プロは人生の役に立つ!
競プロは人生の役に立つ!
 
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第五回講義資料(ワークスアプリケーションズ & AtCoder)
 
T82 aoitan あおいたんのパズルを数学しましょうか_修正版
T82 aoitan あおいたんのパズルを数学しましょうか_修正版T82 aoitan あおいたんのパズルを数学しましょうか_修正版
T82 aoitan あおいたんのパズルを数学しましょうか_修正版
 
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
区間分割の仕方を最適化する動的計画法 (JOI 2021 夏季セミナー)
 
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうかわんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
わんくま勉強会東京#82 あおいたんのパズルを数学しましょうか
 
AtCoder Beginner Contest 007 解説
AtCoder Beginner Contest 007 解説AtCoder Beginner Contest 007 解説
AtCoder Beginner Contest 007 解説
 
第4回すくすく・スクラム TheKanbanGame
第4回すくすく・スクラム TheKanbanGame第4回すくすく・スクラム TheKanbanGame
第4回すくすく・スクラム TheKanbanGame
 
Aizu-2017: B
Aizu-2017: BAizu-2017: B
Aizu-2017: B
 
WUPC2012
WUPC2012WUPC2012
WUPC2012
 
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
 
130323 slide all
130323 slide all130323 slide all
130323 slide all
 
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第四回講義資料(ワークスアプリケーションズ & AtCoder)
 
NSEG第11回勉強会
NSEG第11回勉強会NSEG第11回勉強会
NSEG第11回勉強会
 
実践・最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第二回講義資料(ワークスアプリケーションズ & AtCoder)
 
色々なダイクストラ高速化
色々なダイクストラ高速化色々なダイクストラ高速化
色々なダイクストラ高速化
 
20131222 第八回シェル芸勉強会問題集
20131222 第八回シェル芸勉強会問題集20131222 第八回シェル芸勉強会問題集
20131222 第八回シェル芸勉強会問題集
 
図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』図と実装で理解する『木構造入門』
図と実装で理解する『木構造入門』
 
Code Formula 2014 予選A 解説
Code Formula 2014 予選A 解説Code Formula 2014 予選A 解説
Code Formula 2014 予選A 解説
 

Plus de AtCoder Inc.

AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組みAtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組みAtCoder Inc.
 
Square869120 contest #2
Square869120 contest #2Square869120 contest #2
Square869120 contest #2AtCoder Inc.
 
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説AtCoder Inc.
 
Chokudai Contest 001
Chokudai Contest 001Chokudai Contest 001
Chokudai Contest 001AtCoder Inc.
 
AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説AtCoder Inc.
 
AtCoder Regular Contest 048
AtCoder Regular Contest 048AtCoder Regular Contest 048
AtCoder Regular Contest 048AtCoder Inc.
 
MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説AtCoder Inc.
 
DDPC 2016 予選 解説
DDPC 2016 予選 解説DDPC 2016 予選 解説
DDPC 2016 予選 解説AtCoder Inc.
 
CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説AtCoder Inc.
 
CODE FESTIVAL 2015 解説
CODE FESTIVAL 2015 解説CODE FESTIVAL 2015 解説
CODE FESTIVAL 2015 解説AtCoder Inc.
 
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説AtCoder Inc.
 
AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説AtCoder Inc.
 
AtCoder Regular Contest 045 解説
AtCoder Regular Contest 045 解説AtCoder Regular Contest 045 解説
AtCoder Regular Contest 045 解説AtCoder Inc.
 
CODE FESTIVAL 2015 予選A 解説
CODE FESTIVAL 2015 予選A 解説CODE FESTIVAL 2015 予選A 解説
CODE FESTIVAL 2015 予選A 解説AtCoder Inc.
 
AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説AtCoder Inc.
 
AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説AtCoder Inc.
 
AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説AtCoder Inc.
 

Plus de AtCoder Inc. (20)

TCO2017R1
TCO2017R1TCO2017R1
TCO2017R1
 
AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組みAtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組み
 
Square869120 contest #2
Square869120 contest #2Square869120 contest #2
Square869120 contest #2
 
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
 
Chokudai Contest 001
Chokudai Contest 001Chokudai Contest 001
Chokudai Contest 001
 
AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説
 
AtCoder Regular Contest 048
AtCoder Regular Contest 048AtCoder Regular Contest 048
AtCoder Regular Contest 048
 
MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説
 
DDPC 2016 予選 解説
DDPC 2016 予選 解説DDPC 2016 予選 解説
DDPC 2016 予選 解説
 
arc047
arc047arc047
arc047
 
CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説
 
abc031
abc031abc031
abc031
 
CODE FESTIVAL 2015 解説
CODE FESTIVAL 2015 解説CODE FESTIVAL 2015 解説
CODE FESTIVAL 2015 解説
 
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説
 
AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説
 
AtCoder Regular Contest 045 解説
AtCoder Regular Contest 045 解説AtCoder Regular Contest 045 解説
AtCoder Regular Contest 045 解説
 
CODE FESTIVAL 2015 予選A 解説
CODE FESTIVAL 2015 予選A 解説CODE FESTIVAL 2015 予選A 解説
CODE FESTIVAL 2015 予選A 解説
 
AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説
 
AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説
 
AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説
 

Dernier

My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」inspirehighstaff03
 
Establishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfEstablishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfoganekyokoi
 
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」inspirehighstaff03
 
My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」inspirehighstaff03
 
What I did before opening my business..pdf
What I did before opening my business..pdfWhat I did before opening my business..pdf
What I did before opening my business..pdfoganekyokoi
 
My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」inspirehighstaff03
 
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfMy Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfinspirehighstaff03
 
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドリアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドKen Fukui
 
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfTEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfyukisuga3
 
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slidessusere0a682
 
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドリアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドKen Fukui
 
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドリアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドKen Fukui
 
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」inspirehighstaff03
 
International Politics I - Lecture 1
International Politics I - Lecture 1International Politics I - Lecture 1
International Politics I - Lecture 1Toru Oga
 
My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」inspirehighstaff03
 
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」inspirehighstaff03
 
Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfDivorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfoganekyokoi
 
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」inspirehighstaff03
 
My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」inspirehighstaff03
 
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」inspirehighstaff03
 

Dernier (20)

My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
 
Establishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdfEstablishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdf
 
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
My Inspire High Award 2024「スーパーマーケットで回収されたキャベツ外葉は廃棄されているの?」
 
My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」My Inspire High Award 2024 「AIと仲良くなるには?」
My Inspire High Award 2024 「AIと仲良くなるには?」
 
What I did before opening my business..pdf
What I did before opening my business..pdfWhat I did before opening my business..pdf
What I did before opening my business..pdf
 
My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」
 
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdfMy Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
My Inspire High Award 2024「Yakushima Islandってなんか変じゃない?」.pdf
 
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドリアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
 
TEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdfTEAMIN Service overview for customer_20240422.pdf
TEAMIN Service overview for customer_20240422.pdf
 
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
 
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドリアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
 
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドリアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
 
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
My Inspire High Award 2024「世の中の流行はどのようにして生まれるのか」
 
International Politics I - Lecture 1
International Politics I - Lecture 1International Politics I - Lecture 1
International Politics I - Lecture 1
 
My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」My Inspire High Award 2024「老いることは不幸なこと?」
My Inspire High Award 2024「老いることは不幸なこと?」
 
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
My Inspire High Award 2024「なぜ、好きなことにいつかは飽きるの」
 
Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdfDivorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdf
 
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」My Inspire High Award 2024「なぜ議会への関心が低いのか?」
My Inspire High Award 2024「なぜ議会への関心が低いのか?」
 
My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」My Inspire High Award 2024 「本当の『悪者』って何?」
My Inspire High Award 2024 「本当の『悪者』って何?」
 
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
 

AtCoder Beginner Contest 006 解説

  • 1. AtCoder Beginner Contest 006 解説 AtCoder株式会社 代表取締役 高橋 直大 2014/4/5 1
  • 3. ©AtCoder Inc. All rights reserved. 3 A問題 世界のFIZZBUZZ 1. 問題概要 2. アルゴリズム 2014/4/5 3
  • 4. A問題 問題概要 • 1ケタの数字Nが与えられる • Nが3の倍数、または3が含まれるはYES、そうでない ならNOと出力しなさい 2014/4/5 4
  • 5. A問題 アルゴリズム • 基本的なプログラムの流れ – 標準入力から、必要な入力を受け取る • 今回の場合は、nという1つの整数 – 問題で与えられた処理を行う • 今回は、3で割り切れる、または、3を含むかを調べる – 標準出力へ、答えを出力する 2014/4/5 5
  • 6. A問題 アルゴリズム • 入力 – 1つの数字を、標準入力から受け取る • Cであれば、scanf(“%d”, &n); など • C++であれば、cin >> n; • 入力の受け取り方は、下記の練習問題に記載があります。 – http://practice.contest.atcoder.jp/tasks/practice_1 2014/4/5 6
  • 7. A問題 アルゴリズム • 整数nが、以下の条件を満たすかどうか判定する – 3で割り切れるかどうか – 文字3を含むかどうか – これは、if文と、||などの論理演算子を組み合わせること で表記できる。 • If((3で割り切れる) || (文字3を含む)) print(“YES”); • もし条件を満たすのであればYES、満たさないのであ ればNOを出力する 2014/4/5 7
  • 8. A問題 アルゴリズム • 3で割り切れるかどうか – 余剰を計算する演算子を使用する • 大抵の言語においては% たまにmod – 7%3を計算すると、1が出てくる、みたいな使い方が出来る – これが0になっているかどうか判定するだけ • 3を含むかどうか – そもそも、今回の問題では、nが1ケタ – 3を含むnは、n=3の場合のみ • これは、3で割り切れる数字でもあるので、上の条件に含まれる • よって、考慮しなくても良い。 2014/4/5 8
  • 9. A問題 アルゴリズム • 3を含むかどうか – もし、nが何桁もあった場合 • 13など、3の倍数でないが、3を含むnが存在する – やり方は何通りか存在する • nを文字列として持ち、文字3を含むか調べる – Findなどの、文字列検索を行うアルゴリズムを使う – Forループやforeachなどで1文字ずつ調べても良い • 1ケタずつ整数として調べる。 – まず、%10を使い、1ケタ目の数字だけ取り出す – 次に、それが3であれば終了し、そうでなければ、/10して次の桁に 移行する。 2014/4/5 9
  • 10. A問題 アルゴリズム • 1ケタずつ整数として調べる。 – まず、%10を使い、1ケタ目の数字だけ取り出す – 次に、それが3であれば終了し、そうでなければ、/10して 次の桁に移行する。 – 1342 % 10 = 2 ←3でないので、次の値は10で割って134 – 134 % 10 = 4 ←3でないので、次の値は10で割って13 – 13 % 10 = 3 ←3なので終了 2014/4/5 10
  • 11. A問題 アルゴリズム • 出力 – 求めた答えを、標準出力より出力する。 – 言語によって違います。 • printf(“YES¥n”); (C) • cout << “YES” << endl; (C++) • System.out.println(“YES”); (Java) • 各言語の標準出力は、下記の練習問題に記載があります。 – http://practice.contest.atcoder.jp/tasks/practice_1 2014/4/5 11
  • 12. ©AtCoder Inc. All rights reserved. 12 B問題 トリボナッチ数列 1. 問題概要 2. アルゴリズム 2014/4/5 12
  • 13. B問題 問題概要 • 整数nが与えられる • トリボナッチ数列の第n項を答えなさい – ただし、数字が大きくなるので、10007で割った余りを出力 しなさい。 • トリボナッチ数列とは、3つ前の数字までを足した数 字が、次の数字になる数列の事を言います。 – 0,0,1,1,2,4,7,13,24…みたいなの 2014/4/5 13
  • 14. B問題 アルゴリズム • 入力 – 整数nを受け取る • さっきと同じです! 2014/4/5 14
  • 15. B問題 アルゴリズム • 処理 – 4番目から順番に求める • 1,2,3番目は、予めコンピュータに入力しておく。 – やり方は主に2通り • 1つ前、2つ前、3つ前の数字を、変数に入れておく – a = 0, b = 0, c = 1のような感じ – 1巡したら、a = 0, b = 1, c = 1のようにローテーションさせる • 過去の全ての結果を配列に確保してしまう。 – 入力が100万までなので、長さ100万の配列を確保する – 計算するときは、ar[n] = ar[n-1] + ar[n-2] + ar[n-3]といった感じ 2014/4/5 15
  • 16. B問題 アルゴリズム • 注意点 – B問題の答えは、数字が非常に大きくなる! • Int型やlong型では収まりません – 答えるべきものは、10007で割った余り – この時、途中の計算式でも、10007で割った余りを使って 良い • 最後にだけ計算しようとすると、途中で桁溢れが起きてしまいま す。 2014/4/5 16
  • 17. B問題 アルゴリズム • 出力 – A問題と同じく、答えを出力するだけ – Print(ar[n])みたいな感じ 2014/4/5 17
  • 18. B問題 アルゴリズム • おまけ – 再帰関数でやると、計算量が膨大になります。 • 動的計画法みたいにやりましょう。 • メモ化再帰でもOK 2014/4/5 18
  • 19. ©AtCoder Inc. All rights reserved. 19 C問題 スフィンクスのなぞなぞ 1. 問題概要 2. アルゴリズム 2014/4/5 19
  • 20. C問題 問題概要 • スフィンクスがなぞなぞを出します。 • 「この街には人間が N 人いる。人間は、大人、老人、 赤ちゃんの 3 通りだ。 この街にいる人間の、足の数の合計は M 本で、大 人の足は 2 本、老人の足は 3 本、赤ちゃんの足 は 4 本と仮定した場合、存在する人間の組み合わ せとしてあり得るものを1 つ答えよ。」 – 答えられないと留年する • NとMが入力されるので、答えを返すプログラムを作 りなさい。 – 答えが存在しない場合は-1 -1 -1を出力する 2014/4/5 20
  • 21. C問題 問題概要 • 制約 – 部分点1 • N<=100 • M<=500 – 部分点2 • N<=1500 • M<=7500 – 満点 • N<=100000 • M<=500000 2014/4/5 21
  • 22. C問題 アルゴリズム • N,Mに対して、 – N = a + b + c – M = 2a + 3b + 4c – a,b,c ≧ 0 • なお、大人の人数がa、老人の人数がb、赤ちゃんがcとする • の連立方程式を解かなければならない? 2014/4/5 22
  • 23. C問題 アルゴリズム 部分点1 • N≦100の時、a,b,cを全て調べることが可能 – a,b,c = {0,0,100}, {0,1,99}….{100,0,0}のように全チェック • もしこれで、足の本数がMと一致していたら、それを出力 – 全てのa,b,cの組み合わせで条件を満たさなかった時は、 正しい組み合わせは存在しないので、-1 -1 -1を出力 2014/4/5 23
  • 24. C問題 アルゴリズム 部分点2 • N≦1500の時、a,b,cを全て調べることが不可能? – 高速に計算できる方法を考える • a,bが決まった時、c = N – a – b • これを使うと、やはり全列挙が可能となる。 – 同様に、それぞれの組み合わせに対して、足の本数が一 致する組み合わせが存在するか調べるだけ。 2014/4/5 24
  • 25. C問題 アルゴリズム 満点解法 • 解法1 つるかめ算 – a,b,cのどれかを決めてしまう。 • 例えば、b=0としてみる。 – すると、M = 2*a + 4*c • これはただのつるかめ算 – 大人、老人、子供のどれか1つの人数だけ全探索を行い、 残りの2つを、つるかめ算により求める。 • 人数が負になったり、整数にならない場合は失敗 – 成功する組み合わせがあったらそれを出力 – ダメだったら-1 -1 -1を出力 2014/4/5 25
  • 26. C問題 アルゴリズム 満点解法 • 解法2 老人の数の固定 – 老人が2人いた場合 • 子供1、大人1に変換することが可能 – つまり、老人が2人以上いる組み合わせは、全て老人が1 人以下の組み合わせに変換することが出来る – つまり、老人が0人いる場合と、1人いる場合だけ考えれ ば良い! – そこまで分かれば全探索すれば良い 2014/4/5 26
  • 27. C問題 アルゴリズム 満点解法 • おまけ – 解法1と解法2を組み合わせると、満点解法で解けます – 老人を0,1の2パターンに固定する以外にも、O(1)で解け る解き方はいくつか存在します。 • 回答が複数ありますが、偶奇さえきちんと合わせれば、大体つじ つまを合わせられます。 – 回答が複数あるので、連立方程式ライブラリとかで解こう とするのは非推奨です。 2014/4/5 27
  • 28. ©AtCoder Inc. All rights reserved. 28 D問題 トランプ挿入ソート 1. 問題概要 2. アルゴリズム 2014/4/5 28
  • 29. D問題 問題概要 • 1~Nまでの数字が書かれたカードがN枚存在する • 山札からカードを1枚抜き取り、任意の場所に挿入 することが可能 • 山札をソートしたい時に、並び替える必要のある最 小数を求めなさい • 実は、多くのコンテストに出題されている、超典型問題です。 2014/4/5 29
  • 30. D問題 問題概要 • 問題のイメージ – 以下のようなカードが与えられる – カードを抜いて入れ替える 2014/4/5 30 1 3 5 2 4 6
  • 31. D問題 問題概要 • 問題のイメージ – 以下のようなカードが与えられる – カードを抜いて入れ替える • これを繰り返してソートさせる 2014/4/5 31 1 3 5 2 4 6
  • 32. D問題 問題概要 • 問題のイメージ – 以下のようなカードが与えられる – カードを抜いて入れ替える • これを繰り返してソートさせる – ソートが完了するまでの最小手数を出力する • 今回の場合は2 2014/4/5 32 1 3 5 2 4 6
  • 33. D問題 問題概要 • 制約 – 部分点1 • N≦16 – 部分点2 • N≦1000 – 満点 • N≦30000 2014/4/5 33
  • 34. D問題 アルゴリズム • 考察 – 全ての並び替えパターンは、n!通り存在する • これを全て考えるのは不可能 – 何か工夫をしなければ、解くことは難しい 2014/4/5 34
  • 35. D問題 アルゴリズム 部分点1 • 先ほどのサンプルでは、「2」と「4」のカードを動かす ことになった。 2014/4/5 35 1 3 5 2 4 6
  • 36. D問題 アルゴリズム 部分点1 • 先ほどのサンプルでは、「2」と「4」のカードを動かす ことになった。 – 1個ずつ動かしたが、図のように一気に複数抜いて、一気 に複数差し込んでも良い。 2014/4/5 36 1 3 5 2 4 6
  • 37. D問題 アルゴリズム 部分点1 • 先ほどのサンプルでは、「2」と「4」のカードを動かす ことになった。 – 1個ずつ動かしたが、図のように一気に複数抜いて、一気 に複数差し込んでも良い。 – この時、差し込んでソートできる条件は、取り除いた列が ソート済みになっていること 2014/4/5 37 1 3 5 6
  • 38. D問題 アルゴリズム 部分点1 • つまり、「どのカードを残すか」を全探索することに よって、その残されたカードがソート済みになってい るかどうか調べれば良い。 – この組み合わせは、Nに対して2^N通りしか存在しない。 • Nが16程度であれば間に合う • 2^N通りに対し、全列挙を行い、増加列になっている ものの中で、最も残す数が多いものを調べれば良 い。 – ABC002 D問題「派閥」と同じ考え方 • 002のDと同じアルゴリズムが10点でごめんなさい>< 2014/4/5 38
  • 39. D問題 アルゴリズム 部分点1 • 2^n全列挙の仕方 – 深さ優先探索を使う • 普通に1つずつ、使う使わないを判定する • 自然な実装になりやすい? – 整数のbitを用いた探索を使う • ABC002と同様 • 時間がないので後で書いて再アップロードします>< 2014/4/5 39
  • 40. D問題 アルゴリズム 部分点2 • さらに計算を早くするには? – 残す列がソート済みになっていれば良い、という点に着目 する • 「どのように入れ替えるか」ではなく、「カードを抜い てソートされた状態にするとき、残ったカードの数が 最大にする方法」を考える 2014/4/5 40
  • 41. D問題 アルゴリズム 部分点2 • 増加列を求める方法 – 普通に深さ優先探索をすると前回と同じ – 動的計画法を使おう! • 左から順番に、「最後にそのカードを使った時の、最大の列の長 さはいくつか」を計算していく • 最初は1 2014/4/5 41 1 3 5 2 4 6 1
  • 42. D問題 アルゴリズム 部分点2 • 増加列を求める方法 – 普通に深さ優先探索をすると前回と同じ – 動的計画法を使おう! • 左から順番に、「最後にそのカードを使った時の、最大の列の長 さはいくつか」を計算していく • 最初は1 • 次の値は、前の値を利用して、最大値から計算する 2014/4/5 42 1 3 5 2 4 6 1 2
  • 43. D問題 アルゴリズム 部分点2 • 増加列を求める方法 – 普通に深さ優先探索をすると前回と同じ – 動的計画法を使おう! • 左から順番に、「最後にそのカードを使った時の、最大の列の長 さはいくつか」を計算していく • 次の値は、前の値を利用して、最大値から計算する 2014/4/5 43 1 3 5 2 4 6 1 2 3 2 3
  • 44. D問題 アルゴリズム 部分点2 • 計算量の考察 – 各カードを選ぶ部分がO(n) – そのカードから前のカードの部分列の最大値を選ぶ部分 がO(n) – 併せてO(n^2) 1000程度であれば計算可能となる。 2014/4/5 44 1 3 5 2 4 6 1 2 3 2 3
  • 45. D問題 アルゴリズム 満点解法 • さらに計算を早くするには? – データの持ち方を変えよう! – ここまで出てきた中で、k枚の部分列が作れるもののうち、 もっともカードの値が小さいものを持つ 2014/4/5 45 1 3 5 2 4 6 増加列 0 1 2 3 4 5 カード -INF INF INF INF INF INF
  • 46. D問題 アルゴリズム 満点解法 • さらに計算を早くするには? – データの持ち方を変えよう! – ここまで出てきた中で、k枚の部分列が作れるもののうち、 もっともカードの値が小さいものを持つ 2014/4/5 46 1 3 5 2 4 6 1 増加列 0 1 2 3 4 5 カード -INF 1 INF INF INF INF
  • 47. D問題 アルゴリズム 満点解法 • さらに計算を早くするには? – データの持ち方を変えよう! – ここまで出てきた中で、k枚の部分列が作れるもののうち、 もっともカードの値が小さいものを持つ 2014/4/5 47 1 3 5 2 4 6 1 2 増加列 0 1 2 3 4 5 カード -INF 1 3 INF INF INF
  • 48. D問題 アルゴリズム 満点解法 • さらに計算を早くするには? – データの持ち方を変えよう! – ここまで出てきた中で、k枚の部分列が作れるもののうち、 もっともカードの値が小さいものを持つ 2014/4/5 48 1 3 5 2 4 6 1 2 3 増加列 0 1 2 3 4 5 カード -INF 1 3 5 INF INF
  • 49. D問題 アルゴリズム 満点解法 • さらに計算を早くするには? – データの持ち方を変えよう! – ここまで出てきた中で、k枚の部分列が作れるもののうち、 もっともカードの値が小さいものを持つ 2014/4/5 49 1 3 5 2 4 6 1 2 3 2 増加列 0 1 2 3 4 5 カード -INF 1 2 5 INF INF
  • 50. D問題 アルゴリズム 満点解法 • さらに計算を早くするには? – データの持ち方を変えよう! – ここまで出てきた中で、k枚の部分列が作れるもののうち、 もっともカードの値が小さいものを持つ 2014/4/5 50 1 3 5 2 4 6 1 2 3 2 3 増加列 0 1 2 3 4 5 カード -INF 1 2 4 INF INF
  • 51. D問題 アルゴリズム 満点解法 • さらに計算を早くするには? – データの持ち方を変えよう! – ここまで出てきた中で、k枚の部分列が作れるもののうち、 もっともカードの値が小さいものを持つ 2014/4/5 51 1 3 5 2 4 6 1 2 3 2 3 増加列 0 1 2 3 4 5 カード -INF 1 2 4 6 INF 4
  • 52. D問題 アルゴリズム 満点解法 • 考察 – このカードの配列は、絶対に昇順になっている • よって、足すべき部分は1か所しかなく、二分探索で求めることが 可能である • 下図は、今見ているカードを3だとする 2014/4/5 52 増加列 0 1 2 3 4 5 カード -INF 1 2 4 6 INF
  • 53. D問題 アルゴリズム 満点解法 • 考察 – このカードの配列は、絶対に昇順になっている • よって、足すべき部分は1か所しかなく、二分探索で求めることが 可能である • 下図は、今見ているカードを3だとする 2014/4/5 53 増加列 0 1 2 3 4 5 カード -INF 1 2 4 6 INF
  • 54. D問題 アルゴリズム 満点解法 • 考察 – このカードの配列は、絶対に昇順になっている • よって、足すべき部分は1か所しかなく、二分探索で求めることが 可能である • 下図は、今見ているカードを3だとする 2014/4/6 54 増加列 0 1 2 3 4 5 カード -INF 1 2 4 6 INF
  • 55. D問題 アルゴリズム 満点解法 • 考察 – このカードの配列は、絶対に昇順になっている • よって、足すべき部分は1か所しかなく、二分探索で求めることが 可能である • 下図は、今見ているカードを3だとする こんな感じで求まる 2014/4/6 55 増加列 0 1 2 3 4 5 カード -INF 1 2 4 6 INF
  • 56. D問題 アルゴリズム 満点解法 • 考察 – このカードの配列は、絶対に昇順になっている • よって、足すべき部分は1か所しかなく、二分探索で求めることが 可能である – よって、計算量はO(nlogn)となる。 2014/4/5 56 増加列 0 1 2 3 4 5 カード -INF 1 2 4 6 INF
  • 57. D問題 アルゴリズム • おまけ – 最長増加部分列(Longest Increasing Subsequence)と呼ば れる有名なアルゴリズムです。 • 動的計画法に慣れていれば、知らなくても解ける問題ではありま す。 2014/4/5 57