SlideShare a Scribd company logo
1 of 31
Download to read offline
AtCoder Beginner Contest 007
解説
AtCoder株式会社
2014/4/19 1
競技プログラミングを始める前に
• 競技プログラミングをやったことがない人へ
– まずはこっちのスライドを見よう!
– 過去のコンテストのスライドですが、導入説明があります。
• http://www.slideshare.net/chokudai/abc004
2014/4/19 2
©AtCoder Inc. All rights reserved. 3
A問題 植木算
2014/4/19 3
A問題 概要
• 一直線に木が並んでいる
• 木の本数が与えられる
• 隣り合う木々の間の数を数えなさい
2014/4/19 4
A問題 アルゴリズム
• 基本的なプログラムの流れ
– 標準入力から、必要な入力を受け取る
• 今回の場合は、木の本数を表す整数nを受け取る
– 問題で与えられた処理を行う
• 今回は、整数nに対して、木の間の数を算出する
– 標準出力へ、答えを出力する
2014/4/19 5
A問題 アルゴリズム
• 入力
– 1つの数字を、標準入力から受け取る
• Cであれば、scanf(“%d”, &n); など
• C++であれば、cin >> n;
• 入力の受け取り方は、下記の練習問題に記載があります。
– AtCoderで使用可能な殆どの言語に対して、入出力の方法が記述さ
れています。http://practice.contest.atcoder.jp/tasks/practice_1
2014/4/19 6
A問題 アルゴリズム
• アルゴリズム
– 木がN本あるとき(N≧1) 木の間はN-1箇所ある
– Nを読み込んでN-1を出力すると正解
2014/4/19 7
A問題 アルゴリズム
• 具体的な処理
– int ret = N – 1;
– N = N-1;
– N--;
– --N;
– 好きなのでいいです!
• もちろん出力時にN-1を出力するのもOK
• 私は入力された整数を変更したくない派なので、1番目を推奨し
ています。
2014/4/19 8
A問題 アルゴリズム
• 出力
– 求めた答えを、標準出力より出力する。
– 言語によって違います。
• printf(“%d¥n”, N); (C)
• cout << N << endl; (C++)
• System.out.println(N); (Java)
• 各言語の標準出力は、下記の練習問題に記載があります。
– http://practice.contest.atcoder.jp/tasks/practice_1
2014/4/19 9
©AtCoder Inc. All rights reserved. 10
B問題 辞書式順序
2014/4/19 10
B問題 概要
• 英小文字から成る文字列Aが与えられる
• 辞書順比較した際にAより小さい文字列を1つ
どれでもよいので出力、存在しない場合は-1を出力
2014/4/19 11
B問題 アルゴリズム
• 問題の流れ
• 入力
– 文字列Aを受け取る
• 処理
– 文字列Aより辞書順で小さい文字列を探す
• 出力
– 上記処理で見つけた文字列を出力する
– もし存在しなければ-1を出力する
2014/4/19 12
B問題 アルゴリズム
• 最も良いアルゴリズム
– “a”が一番小さいのでどんな文字列がきても”a”を出力す
ればよい
– ただしA=“a”のときはそれより小さい文字列は存在しない
ので”-1”を出力する。
• もちろんこれ以外にも色々ある
– 具体例は以下の通り
• 文字列が2文字以上の場合は、1文字減らして出力
• 1文字の場合は全探索
2014/4/19 13
©AtCoder Inc. All rights reserved. 14
C問題 幅優先探索
2014/4/19 14
C問題 概要
• 迷路とスタートとゴールが与えられる
• 上下左右に移動できるのでスタート-ゴール間の最
短距離を求めよ
2014/4/19 15
C問題 アルゴリズム
• 問題文に掛かれている通りに実装しよう!
2014/4/19 16
C問題 アルゴリズム
• 実装Q&A
– 上下左右に移動するのが面倒です!
• こんな実装をしてあげよう!
– int[] vx = { 0, 1, 0, -1};
– Int[] vy = { 1, 0, -1, 0};
– for(int i=0;i<4;i++) {
» int nx = x + vx[i];
» int ny = y + vy[i];
» …
• このように、配列を使ってあげることによって、forループで纏めて
処理することが出来ます!
2014/4/19 17
C問題 アルゴリズム
• 実装Q&A
– キューって何?
• データの出し入れが出来るデータ構造です。
• 先に入れたデータが先に出てきます。
– 具体的にはこんな感じ
• 1を入れる
• 2を入れる
• 数字を取り出す → 1が出てくる
• 3を入れる
• 4を入れる
• 数字を取り出す → 2が出てくる
– こんな感じで、データをどんどん入れて、取り出す処理を行うと、
順番に取り出せる!
2014/4/19 18
C問題 アルゴリズム
• 実装Q&A
– 僕の言語にもキューって実装されてるの?
• 大抵の言語にあります!
• C++なら#include<queue>すれば、queueが。
• JavaならJava.utilにQueueが。
– Queue<Integer> = new LinkedList<Integer>();みたいになるので注意
• C#なら、System.Collections.GenericにQueueが。
• 他の言語にもきっとあります!
– なかったら自分で実装しましょう!
• 配列で出来ます!
– 頭から順番に詰めていって、頭から取り出すだけ。
– 長い配列と、頭の場所を表す整数、最後尾の場所を表す整数、の3
つが必要
• リストでも出来ます!
2014/4/19 19
C問題 アルゴリズム
• 実装Q&A
– 場所のデータをどうやってキューに入れるの?
• 方法は3通り
• X,Yの両方のデータが持てるデータ構造を使う
– PairやTupleなど、複数のデータを入れられるものを使う
– 構造体やclassを自分で作って入れる
• 整数に押し込んでしまう。
– X * 1000 + Yなどを入れる。
– X = A / 1000; Y = A % 1000;などで取り出す。
» オーバーフローしないかどうかに注意!
» 速度がどうしても欲しい時や、メモリ消費量を抑えたい時用。競技プロ
グラミング以外では、必要な時以外は使わないように!
• キューを2個つくる!
– X用のキューとY用のキュー
2014/4/19 20
C問題 アルゴリズム
• 問題文に載っている幅優先探索を行えばよい
• キューを用いず、全てのマスに書かれている数字を
更新操作の度に確認しても今回は間に合う
• 最短手数が1000手を超える盤面も存在することに
注意せよ
• キューは自前で実装してもよいですが特にC++等は
標準でqueueクラスが存在します
2014/4/19 21
©AtCoder Inc. All rights reserved. 22
D問題 禁止された数字
2014/4/19 22
D問題 概要
• AとBが与えられる
• A以上B以下で桁に4と9を含まない数字を数える
2014/4/19 23
D問題 アルゴリズム(部分点 30点)
• 禁止された数字か判定された関数を作ることができ
たら愚直にB-A+1回のループを書けばよい
– for(int i=A; i<=B; i++)みたいな感じ。
• 30点が得れる
• ある数字が含まれているかどうかは、ABC006 A問題
でやったばっかり!
– http://abc006.contest.atcoder.jp/tasks/abc006_1
– 解説はこちらから
• http://abc006.contest.atcoder.jp/tasks/abc006_1
2014/4/19 24
D問題 アルゴリズム(4,9)
• 4,9を含むかどうか
– やり方は何通りか存在する
• nを文字列として持ち、文字4,9を含むか調べる
– Findなどの、文字列検索を行うアルゴリズムを使う
– Forループやforeachなどで1文字ずつ調べても良い
• 1ケタずつ整数として調べる。
– まず、%10を使い、1ケタ目の数字だけ取り出す
– 次に、それが4,9であれば終了し、そうでなければ、/10して次の桁に
移行する。
2014/4/19 25
D問題 アルゴリズム(4,9)
• 1ケタずつ整数として調べる。
– まず、%10を使い、1ケタ目の数字だけ取り出す
– 次に、それが4か9であれば終了し、そうでなければ、/10
して次の桁に移行する。
• 例えば、1342について調べる
– 1342 % 10 = 2 ←4や9でないので、次の値は10で割って
134
– 134 % 10 = 4 ←4なので終了
2014/4/19 26
D問題 アルゴリズム(満点)
• 動的計画法を用いる
• 0~Nに含まれる禁止された数の数をf(N)とする
• A~Bに含まれる禁止された数の数はf(B)-f(A-1)
– 例えば、87から243を求めたいなら、0~243を求めて、0~86を
引けば良い!
• f(N)を求めるためには、上位桁から、先行0を認めて各
桁毎に決めていくいわゆる桁DPが有効
• 上位桁から決めていく際に、ある桁で一度,N未満が確
定したらそれ以降はどんな値を入れても良い
(0~Nだから)
• 状態数は (桁数) *( 既に未満確定したかどうか(2通り)
• 桁数をNとして、O(N)
2014/4/19 27
D問題 アルゴリズム(満点) つづき
• 動的計画法を用いる
• たとえばF(1234)を求めるとき、
---- → 状態: (0桁目まで確定・未満フラグ: false)
1--- → 状態: (1桁目まで確定・未満フラグ: false)
12-- → 状態: (2桁目まで確定・未満フラグ: false)
10-- → 状態: (2桁目まで確定・未満フラグ: true)
11-- → 状態: (2桁目まで確定・未満フラグ: true)
108-→ 状態: (3桁目まで確定・未満フラグ: true)
101-→ 状態: (3桁目まで確定・未満フラグ: true)
こう言う感じの状態を考える
2014/4/19 28
D問題 アルゴリズム(満点) つづき
• F(1234)について考える
10--
11--
この二つは、2ケタ目まで確定した時点で、同じ扱いが
出来る!!
– 両方とも、それ以降の数字は、何を入れても良い。
• しかし、12—は、同じ扱いが出来ない!
– 34以下を残りに入れないといけない。
• これを上手いこと纏めて、処理してあげる必要があ
ります!
2014/4/19 29
D問題 アルゴリズム(満点) つづき
• 10—や、11—みたいな、「2桁目まで決まっていて」
「小さいことが確定している」状態を、dp[1][1]のよう
に表す。 (0からなので、2ケタ目は1で表す)
• 12—のような、「2桁目まで決まっていて」「小さいこ
とが確定していない」状態をdp[1][0]のように表す。
• このように、「何桁目まで確定しているか」「N未満で
あることが確定しているかどうか」の2つの状態を
使って纏めてあげることによって、簡単に計算する
ことが出来る!
2014/4/19 30
D問題 アルゴリズム(満点) つづき
• その他の解法
– 8進数を使った解法について
• 例えば、195435までの数字に対して、禁止されていない数を数えた
い
– 要するにf(195435)
• 今回のルールで使える数字は、0,1,2,3,5,6,7,8の8通りしか存在しな
い!
– 0->0, 1->1, 2->2, 3->3, 5->4, 6->5, 7->6, 8->7に変換するようにして、8進
数として扱えば、1から変換後の数字までの数がいくつあるか数えるだ
けで良い!
– じゃあ、4と9の場合はどうするの?
» F(195435)というのは、F(188888)と同じ!
» なぜなら、195435から188889は、全て9が含まれている!
» ということで、4や9を見つけたら、下の桁を全部8で埋めれば良い!
» F(12345678) = F(12338888)みたいになります!
» この処理を行った後に、先ほどの変換を行い、8進数から10進数にすれば
良い!
2014/4/19 31

More Related Content

What's hot

AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説AtCoder Inc.
 
AtCoder Beginner Contest 026 解説
AtCoder Beginner Contest 026 解説AtCoder Beginner Contest 026 解説
AtCoder Beginner Contest 026 解説AtCoder Inc.
 
AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説AtCoder Inc.
 
AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説AtCoder Inc.
 
AtCoder Regular Contest 037 解説
AtCoder Regular Contest 037 解説AtCoder Regular Contest 037 解説
AtCoder Regular Contest 037 解説AtCoder Inc.
 
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説AtCoder Inc.
 
AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説AtCoder Inc.
 
AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説AtCoder Inc.
 
AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説AtCoder Inc.
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムTakuya Akiba
 
AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説AtCoder Inc.
 
AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説AtCoder Inc.
 
AtCoder Beginner Contest 016 解説
AtCoder Beginner Contest 016 解説AtCoder Beginner Contest 016 解説
AtCoder Beginner Contest 016 解説AtCoder Inc.
 
Indeedなう 予選A 解説
Indeedなう 予選A 解説Indeedなう 予選A 解説
Indeedなう 予選A 解説AtCoder Inc.
 
AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説AtCoder Inc.
 

What's hot (20)

動的計画法を極める!
動的計画法を極める!動的計画法を極める!
動的計画法を極める!
 
AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説
 
AtCoder Beginner Contest 026 解説
AtCoder Beginner Contest 026 解説AtCoder Beginner Contest 026 解説
AtCoder Beginner Contest 026 解説
 
AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説
 
AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説
 
最大流 (max flow)
最大流 (max flow)最大流 (max flow)
最大流 (max flow)
 
Binary indexed tree
Binary indexed treeBinary indexed tree
Binary indexed tree
 
AtCoder Regular Contest 037 解説
AtCoder Regular Contest 037 解説AtCoder Regular Contest 037 解説
AtCoder Regular Contest 037 解説
 
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説
 
AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説
 
AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説
 
AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説
 
プログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズムプログラミングコンテストでの乱択アルゴリズム
プログラミングコンテストでの乱択アルゴリズム
 
AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説
 
arc047
arc047arc047
arc047
 
AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説AtCoder Regular Contest 036 解説
AtCoder Regular Contest 036 解説
 
AtCoder Beginner Contest 016 解説
AtCoder Beginner Contest 016 解説AtCoder Beginner Contest 016 解説
AtCoder Beginner Contest 016 解説
 
Indeedなう 予選A 解説
Indeedなう 予選A 解説Indeedなう 予選A 解説
Indeedなう 予選A 解説
 
AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説
 
abc027
abc027abc027
abc027
 

Viewers also liked

AtCoder Beginner Contest 005 解説
AtCoder Beginner Contest 005 解説AtCoder Beginner Contest 005 解説
AtCoder Beginner Contest 005 解説AtCoder Inc.
 
AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説AtCoder Inc.
 
AtCoder Beginner Contest 011 解説
AtCoder Beginner Contest 011 解説AtCoder Beginner Contest 011 解説
AtCoder Beginner Contest 011 解説AtCoder Inc.
 
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説AtCoder Inc.
 
AtCoder Beginner Contest 003 解説
AtCoder Beginner Contest 003 解説AtCoder Beginner Contest 003 解説
AtCoder Beginner Contest 003 解説AtCoder Inc.
 
AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説AtCoder Inc.
 
AtCoder Beginner Contest 018 解説
AtCoder Beginner Contest 018 解説AtCoder Beginner Contest 018 解説
AtCoder Beginner Contest 018 解説AtCoder Inc.
 
AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説AtCoder Inc.
 
AtCoder Beginner Contest 019 解説
AtCoder Beginner Contest 019 解説AtCoder Beginner Contest 019 解説
AtCoder Beginner Contest 019 解説AtCoder Inc.
 
AtCoder Beginner Contest 013 解説
AtCoder Beginner Contest 013 解説AtCoder Beginner Contest 013 解説
AtCoder Beginner Contest 013 解説AtCoder Inc.
 
AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説AtCoder Inc.
 
AtCoder Beginner Contest 020 解説
AtCoder Beginner Contest 020 解説AtCoder Beginner Contest 020 解説
AtCoder Beginner Contest 020 解説AtCoder Inc.
 
AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説AtCoder Inc.
 
AtCoder Regular Contest 048
AtCoder Regular Contest 048AtCoder Regular Contest 048
AtCoder Regular Contest 048AtCoder Inc.
 
Square869120 contest #2
Square869120 contest #2Square869120 contest #2
Square869120 contest #2AtCoder Inc.
 
AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組みAtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組みAtCoder Inc.
 
AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説AtCoder Inc.
 

Viewers also liked (19)

AtCoder Beginner Contest 005 解説
AtCoder Beginner Contest 005 解説AtCoder Beginner Contest 005 解説
AtCoder Beginner Contest 005 解説
 
AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説
 
AtCoder Beginner Contest 011 解説
AtCoder Beginner Contest 011 解説AtCoder Beginner Contest 011 解説
AtCoder Beginner Contest 011 解説
 
ABC001 解説
ABC001 解説ABC001 解説
ABC001 解説
 
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説
 
AtCoder Beginner Contest 003 解説
AtCoder Beginner Contest 003 解説AtCoder Beginner Contest 003 解説
AtCoder Beginner Contest 003 解説
 
AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説
 
AtCoder Beginner Contest 018 解説
AtCoder Beginner Contest 018 解説AtCoder Beginner Contest 018 解説
AtCoder Beginner Contest 018 解説
 
AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説
 
AtCoder Beginner Contest 019 解説
AtCoder Beginner Contest 019 解説AtCoder Beginner Contest 019 解説
AtCoder Beginner Contest 019 解説
 
AtCoder Beginner Contest 013 解説
AtCoder Beginner Contest 013 解説AtCoder Beginner Contest 013 解説
AtCoder Beginner Contest 013 解説
 
AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説
 
AtCoder Beginner Contest 020 解説
AtCoder Beginner Contest 020 解説AtCoder Beginner Contest 020 解説
AtCoder Beginner Contest 020 解説
 
AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説
 
AtCoder Regular Contest 048
AtCoder Regular Contest 048AtCoder Regular Contest 048
AtCoder Regular Contest 048
 
abc031
abc031abc031
abc031
 
Square869120 contest #2
Square869120 contest #2Square869120 contest #2
Square869120 contest #2
 
AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組みAtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組み
 
AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説
 

Similar to AtCoder Beginner Contest 007 解説

すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」Shin Ise
 
タダで始めるテストファースト入門 ~ C# Express + NUnit
タダで始めるテストファースト入門 ~ C# Express + NUnitタダで始めるテストファースト入門 ~ C# Express + NUnit
タダで始めるテストファースト入門 ~ C# Express + NUnitYasuhiko Yamamoto
 
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarrayRyosuke839
 
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)AtCoder Inc.
 
最近の単体テスト
最近の単体テスト最近の単体テスト
最近の単体テストKen Morishita
 
リテラル文字列型までの道
リテラル文字列型までの道リテラル文字列型までの道
リテラル文字列型までの道Satoshi Sato
 
Using Deep Learning for Recommendation
Using Deep Learning for RecommendationUsing Deep Learning for Recommendation
Using Deep Learning for RecommendationEduardo Gonzalez
 
AtCoder Regular Contest 032 解説
AtCoder Regular Contest 032 解説AtCoder Regular Contest 032 解説
AtCoder Regular Contest 032 解説AtCoder Inc.
 
LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門Yuichiro Kobayashi
 
Active Learning 入門
Active Learning 入門Active Learning 入門
Active Learning 入門Shuyo Nakatani
 
今日からできる構造学習(主に構造化パーセプトロンについて)
今日からできる構造学習(主に構造化パーセプトロンについて)今日からできる構造学習(主に構造化パーセプトロンについて)
今日からできる構造学習(主に構造化パーセプトロンについて)syou6162
 
111015 tokyo scipy2_ディスカッション
111015 tokyo scipy2_ディスカッション111015 tokyo scipy2_ディスカッション
111015 tokyo scipy2_ディスカッションShohei Hido
 
Unity + C#講座①
Unity + C#講座①Unity + C#講座①
Unity + C#講座①Yu Yu
 
A Machine Learning Framework for Programming by Example
A Machine Learning Framework for Programming by ExampleA Machine Learning Framework for Programming by Example
A Machine Learning Framework for Programming by ExampleKoji Matsuda
 

Similar to AtCoder Beginner Contest 007 解説 (20)

すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
 
タダで始めるテストファースト入門 ~ C# Express + NUnit
タダで始めるテストファースト入門 ~ C# Express + NUnitタダで始めるテストファースト入門 ~ C# Express + NUnit
タダで始めるテストファースト入門 ~ C# Express + NUnit
 
Tokyo r38
Tokyo r38Tokyo r38
Tokyo r38
 
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
 
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
 
最近の単体テスト
最近の単体テスト最近の単体テスト
最近の単体テスト
 
Tokyo r30 beginner
Tokyo r30 beginnerTokyo r30 beginner
Tokyo r30 beginner
 
PFI Christmas seminar 2009
PFI Christmas seminar 2009PFI Christmas seminar 2009
PFI Christmas seminar 2009
 
リテラル文字列型までの道
リテラル文字列型までの道リテラル文字列型までの道
リテラル文字列型までの道
 
Using Deep Learning for Recommendation
Using Deep Learning for RecommendationUsing Deep Learning for Recommendation
Using Deep Learning for Recommendation
 
AtCoder Regular Contest 032 解説
AtCoder Regular Contest 032 解説AtCoder Regular Contest 032 解説
AtCoder Regular Contest 032 解説
 
LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門
 
Coding Interview
Coding InterviewCoding Interview
Coding Interview
 
Active Learning 入門
Active Learning 入門Active Learning 入門
Active Learning 入門
 
今日からできる構造学習(主に構造化パーセプトロンについて)
今日からできる構造学習(主に構造化パーセプトロンについて)今日からできる構造学習(主に構造化パーセプトロンについて)
今日からできる構造学習(主に構造化パーセプトロンについて)
 
C言語講習会1
C言語講習会1C言語講習会1
C言語講習会1
 
111015 tokyo scipy2_ディスカッション
111015 tokyo scipy2_ディスカッション111015 tokyo scipy2_ディスカッション
111015 tokyo scipy2_ディスカッション
 
Unity + C#講座①
Unity + C#講座①Unity + C#講座①
Unity + C#講座①
 
Iterators must-go(ja)
Iterators must-go(ja)Iterators must-go(ja)
Iterators must-go(ja)
 
A Machine Learning Framework for Programming by Example
A Machine Learning Framework for Programming by ExampleA Machine Learning Framework for Programming by Example
A Machine Learning Framework for Programming by Example
 

More from AtCoder 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.
 
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.
 
AtCoder Regular Contest 046
AtCoder Regular Contest 046AtCoder Regular Contest 046
AtCoder Regular Contest 046AtCoder 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 028 解説
AtCoder Beginner Contest 028 解説AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説AtCoder Inc.
 
天下一プログラマーコンテスト2015 予選B 解説
天下一プログラマーコンテスト2015 予選B 解説天下一プログラマーコンテスト2015 予選B 解説
天下一プログラマーコンテスト2015 予選B 解説AtCoder Inc.
 
AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説AtCoder Inc.
 
天下一プログラマーコンテスト2015 予選A E問題 解説
天下一プログラマーコンテスト2015 予選A E問題 解説天下一プログラマーコンテスト2015 予選A E問題 解説
天下一プログラマーコンテスト2015 予選A E問題 解説AtCoder Inc.
 
AtCoder Regular Contest 042 解説
AtCoder Regular Contest 042 解説AtCoder Regular Contest 042 解説
AtCoder Regular Contest 042 解説AtCoder Inc.
 

More from AtCoder Inc. (19)

TCO2017R1
TCO2017R1TCO2017R1
TCO2017R1
 
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 解説
 
MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説
 
DDPC 2016 予選 解説
DDPC 2016 予選 解説DDPC 2016 予選 解説
DDPC 2016 予選 解説
 
abc032
abc032abc032
abc032
 
CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説
 
AtCoder Regular Contest 046
AtCoder Regular Contest 046AtCoder Regular Contest 046
AtCoder Regular Contest 046
 
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 028 解説
AtCoder Beginner Contest 028 解説AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説
 
天下一プログラマーコンテスト2015 予選B 解説
天下一プログラマーコンテスト2015 予選B 解説天下一プログラマーコンテスト2015 予選B 解説
天下一プログラマーコンテスト2015 予選B 解説
 
AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説
 
天下一プログラマーコンテスト2015 予選A E問題 解説
天下一プログラマーコンテスト2015 予選A E問題 解説天下一プログラマーコンテスト2015 予選A E問題 解説
天下一プログラマーコンテスト2015 予選A E問題 解説
 
AtCoder Regular Contest 042 解説
AtCoder Regular Contest 042 解説AtCoder Regular Contest 042 解説
AtCoder Regular Contest 042 解説
 

Recently uploaded

My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」inspirehighstaff03
 
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slidessusere0a682
 
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」inspirehighstaff03
 
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドリアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドKen Fukui
 
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」inspirehighstaff03
 
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドリアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドKen Fukui
 
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドリアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドKen Fukui
 
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドリアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドKen Fukui
 
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」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
 
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
 
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
 
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
 
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
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ssusere0a682
 
My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」inspirehighstaff03
 

Recently uploaded (20)

My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」My Inspire High Award 2024    「孤独は敵なのか?」
My Inspire High Award 2024    「孤独は敵なのか?」
 
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
【ゲーム理論入門】ChatGPTが作成した ゲーム理論の問題を解く #3 Slide
 
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
My Inspire High Award 2024「なぜ人は他人と違うところがあってもそれをなかなか誇れないのか?」
 
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライドリアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
リアル戦国探究in米沢 当日講座2スライド(スタッフ共有用)『人を致すも人に致されず』についてのスライド
 
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」My Inspire High Award 2024「他者と自分、対立を防ぐには?」
My Inspire High Award 2024「他者と自分、対立を防ぐには?」
 
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライドリアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
リアル戦国探究in米沢 事前講座2スライド(スタッフ共有用)『両雄の強さの秘密』についてのスライド
 
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライドリアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
リアル戦国探究in米沢 当日講座3スライド(スタッフ共有用)『糧は三度はさいせず』についてのスライド
 
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライドリアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
リアル戦国探究in米沢 事前講座1スライド(スタッフ共有用)『川中島の謎』についてのスライド
 
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
My Inspire High Award2024「外国人が日本のテーブルマナーに驚く理由は?」
 
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
 
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と仲良くなるには?」
 
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「老いることは不幸なこと?」
 
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
 
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  「正義って存在するの?」
 
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
ゲーム理論 BASIC 演習105 -n人囚人のジレンマモデル- #ゲーム理論 #gametheory #数学
 
My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」My Inspire High Award 2024      「家族とは何か」
My Inspire High Award 2024      「家族とは何か」
 

AtCoder Beginner Contest 007 解説

  • 1. AtCoder Beginner Contest 007 解説 AtCoder株式会社 2014/4/19 1
  • 2. 競技プログラミングを始める前に • 競技プログラミングをやったことがない人へ – まずはこっちのスライドを見よう! – 過去のコンテストのスライドですが、導入説明があります。 • http://www.slideshare.net/chokudai/abc004 2014/4/19 2
  • 3. ©AtCoder Inc. All rights reserved. 3 A問題 植木算 2014/4/19 3
  • 4. A問題 概要 • 一直線に木が並んでいる • 木の本数が与えられる • 隣り合う木々の間の数を数えなさい 2014/4/19 4
  • 5. A問題 アルゴリズム • 基本的なプログラムの流れ – 標準入力から、必要な入力を受け取る • 今回の場合は、木の本数を表す整数nを受け取る – 問題で与えられた処理を行う • 今回は、整数nに対して、木の間の数を算出する – 標準出力へ、答えを出力する 2014/4/19 5
  • 6. A問題 アルゴリズム • 入力 – 1つの数字を、標準入力から受け取る • Cであれば、scanf(“%d”, &n); など • C++であれば、cin >> n; • 入力の受け取り方は、下記の練習問題に記載があります。 – AtCoderで使用可能な殆どの言語に対して、入出力の方法が記述さ れています。http://practice.contest.atcoder.jp/tasks/practice_1 2014/4/19 6
  • 7. A問題 アルゴリズム • アルゴリズム – 木がN本あるとき(N≧1) 木の間はN-1箇所ある – Nを読み込んでN-1を出力すると正解 2014/4/19 7
  • 8. A問題 アルゴリズム • 具体的な処理 – int ret = N – 1; – N = N-1; – N--; – --N; – 好きなのでいいです! • もちろん出力時にN-1を出力するのもOK • 私は入力された整数を変更したくない派なので、1番目を推奨し ています。 2014/4/19 8
  • 9. A問題 アルゴリズム • 出力 – 求めた答えを、標準出力より出力する。 – 言語によって違います。 • printf(“%d¥n”, N); (C) • cout << N << endl; (C++) • System.out.println(N); (Java) • 各言語の標準出力は、下記の練習問題に記載があります。 – http://practice.contest.atcoder.jp/tasks/practice_1 2014/4/19 9
  • 10. ©AtCoder Inc. All rights reserved. 10 B問題 辞書式順序 2014/4/19 10
  • 11. B問題 概要 • 英小文字から成る文字列Aが与えられる • 辞書順比較した際にAより小さい文字列を1つ どれでもよいので出力、存在しない場合は-1を出力 2014/4/19 11
  • 12. B問題 アルゴリズム • 問題の流れ • 入力 – 文字列Aを受け取る • 処理 – 文字列Aより辞書順で小さい文字列を探す • 出力 – 上記処理で見つけた文字列を出力する – もし存在しなければ-1を出力する 2014/4/19 12
  • 13. B問題 アルゴリズム • 最も良いアルゴリズム – “a”が一番小さいのでどんな文字列がきても”a”を出力す ればよい – ただしA=“a”のときはそれより小さい文字列は存在しない ので”-1”を出力する。 • もちろんこれ以外にも色々ある – 具体例は以下の通り • 文字列が2文字以上の場合は、1文字減らして出力 • 1文字の場合は全探索 2014/4/19 13
  • 14. ©AtCoder Inc. All rights reserved. 14 C問題 幅優先探索 2014/4/19 14
  • 15. C問題 概要 • 迷路とスタートとゴールが与えられる • 上下左右に移動できるのでスタート-ゴール間の最 短距離を求めよ 2014/4/19 15
  • 17. C問題 アルゴリズム • 実装Q&A – 上下左右に移動するのが面倒です! • こんな実装をしてあげよう! – int[] vx = { 0, 1, 0, -1}; – Int[] vy = { 1, 0, -1, 0}; – for(int i=0;i<4;i++) { » int nx = x + vx[i]; » int ny = y + vy[i]; » … • このように、配列を使ってあげることによって、forループで纏めて 処理することが出来ます! 2014/4/19 17
  • 18. C問題 アルゴリズム • 実装Q&A – キューって何? • データの出し入れが出来るデータ構造です。 • 先に入れたデータが先に出てきます。 – 具体的にはこんな感じ • 1を入れる • 2を入れる • 数字を取り出す → 1が出てくる • 3を入れる • 4を入れる • 数字を取り出す → 2が出てくる – こんな感じで、データをどんどん入れて、取り出す処理を行うと、 順番に取り出せる! 2014/4/19 18
  • 19. C問題 アルゴリズム • 実装Q&A – 僕の言語にもキューって実装されてるの? • 大抵の言語にあります! • C++なら#include<queue>すれば、queueが。 • JavaならJava.utilにQueueが。 – Queue<Integer> = new LinkedList<Integer>();みたいになるので注意 • C#なら、System.Collections.GenericにQueueが。 • 他の言語にもきっとあります! – なかったら自分で実装しましょう! • 配列で出来ます! – 頭から順番に詰めていって、頭から取り出すだけ。 – 長い配列と、頭の場所を表す整数、最後尾の場所を表す整数、の3 つが必要 • リストでも出来ます! 2014/4/19 19
  • 20. C問題 アルゴリズム • 実装Q&A – 場所のデータをどうやってキューに入れるの? • 方法は3通り • X,Yの両方のデータが持てるデータ構造を使う – PairやTupleなど、複数のデータを入れられるものを使う – 構造体やclassを自分で作って入れる • 整数に押し込んでしまう。 – X * 1000 + Yなどを入れる。 – X = A / 1000; Y = A % 1000;などで取り出す。 » オーバーフローしないかどうかに注意! » 速度がどうしても欲しい時や、メモリ消費量を抑えたい時用。競技プロ グラミング以外では、必要な時以外は使わないように! • キューを2個つくる! – X用のキューとY用のキュー 2014/4/19 20
  • 21. C問題 アルゴリズム • 問題文に載っている幅優先探索を行えばよい • キューを用いず、全てのマスに書かれている数字を 更新操作の度に確認しても今回は間に合う • 最短手数が1000手を超える盤面も存在することに 注意せよ • キューは自前で実装してもよいですが特にC++等は 標準でqueueクラスが存在します 2014/4/19 21
  • 22. ©AtCoder Inc. All rights reserved. 22 D問題 禁止された数字 2014/4/19 22
  • 23. D問題 概要 • AとBが与えられる • A以上B以下で桁に4と9を含まない数字を数える 2014/4/19 23
  • 24. D問題 アルゴリズム(部分点 30点) • 禁止された数字か判定された関数を作ることができ たら愚直にB-A+1回のループを書けばよい – for(int i=A; i<=B; i++)みたいな感じ。 • 30点が得れる • ある数字が含まれているかどうかは、ABC006 A問題 でやったばっかり! – http://abc006.contest.atcoder.jp/tasks/abc006_1 – 解説はこちらから • http://abc006.contest.atcoder.jp/tasks/abc006_1 2014/4/19 24
  • 25. D問題 アルゴリズム(4,9) • 4,9を含むかどうか – やり方は何通りか存在する • nを文字列として持ち、文字4,9を含むか調べる – Findなどの、文字列検索を行うアルゴリズムを使う – Forループやforeachなどで1文字ずつ調べても良い • 1ケタずつ整数として調べる。 – まず、%10を使い、1ケタ目の数字だけ取り出す – 次に、それが4,9であれば終了し、そうでなければ、/10して次の桁に 移行する。 2014/4/19 25
  • 26. D問題 アルゴリズム(4,9) • 1ケタずつ整数として調べる。 – まず、%10を使い、1ケタ目の数字だけ取り出す – 次に、それが4か9であれば終了し、そうでなければ、/10 して次の桁に移行する。 • 例えば、1342について調べる – 1342 % 10 = 2 ←4や9でないので、次の値は10で割って 134 – 134 % 10 = 4 ←4なので終了 2014/4/19 26
  • 27. D問題 アルゴリズム(満点) • 動的計画法を用いる • 0~Nに含まれる禁止された数の数をf(N)とする • A~Bに含まれる禁止された数の数はf(B)-f(A-1) – 例えば、87から243を求めたいなら、0~243を求めて、0~86を 引けば良い! • f(N)を求めるためには、上位桁から、先行0を認めて各 桁毎に決めていくいわゆる桁DPが有効 • 上位桁から決めていく際に、ある桁で一度,N未満が確 定したらそれ以降はどんな値を入れても良い (0~Nだから) • 状態数は (桁数) *( 既に未満確定したかどうか(2通り) • 桁数をNとして、O(N) 2014/4/19 27
  • 28. D問題 アルゴリズム(満点) つづき • 動的計画法を用いる • たとえばF(1234)を求めるとき、 ---- → 状態: (0桁目まで確定・未満フラグ: false) 1--- → 状態: (1桁目まで確定・未満フラグ: false) 12-- → 状態: (2桁目まで確定・未満フラグ: false) 10-- → 状態: (2桁目まで確定・未満フラグ: true) 11-- → 状態: (2桁目まで確定・未満フラグ: true) 108-→ 状態: (3桁目まで確定・未満フラグ: true) 101-→ 状態: (3桁目まで確定・未満フラグ: true) こう言う感じの状態を考える 2014/4/19 28
  • 29. D問題 アルゴリズム(満点) つづき • F(1234)について考える 10-- 11-- この二つは、2ケタ目まで確定した時点で、同じ扱いが 出来る!! – 両方とも、それ以降の数字は、何を入れても良い。 • しかし、12—は、同じ扱いが出来ない! – 34以下を残りに入れないといけない。 • これを上手いこと纏めて、処理してあげる必要があ ります! 2014/4/19 29
  • 30. D問題 アルゴリズム(満点) つづき • 10—や、11—みたいな、「2桁目まで決まっていて」 「小さいことが確定している」状態を、dp[1][1]のよう に表す。 (0からなので、2ケタ目は1で表す) • 12—のような、「2桁目まで決まっていて」「小さいこ とが確定していない」状態をdp[1][0]のように表す。 • このように、「何桁目まで確定しているか」「N未満で あることが確定しているかどうか」の2つの状態を 使って纏めてあげることによって、簡単に計算する ことが出来る! 2014/4/19 30
  • 31. D問題 アルゴリズム(満点) つづき • その他の解法 – 8進数を使った解法について • 例えば、195435までの数字に対して、禁止されていない数を数えた い – 要するにf(195435) • 今回のルールで使える数字は、0,1,2,3,5,6,7,8の8通りしか存在しな い! – 0->0, 1->1, 2->2, 3->3, 5->4, 6->5, 7->6, 8->7に変換するようにして、8進 数として扱えば、1から変換後の数字までの数がいくつあるか数えるだ けで良い! – じゃあ、4と9の場合はどうするの? » F(195435)というのは、F(188888)と同じ! » なぜなら、195435から188889は、全て9が含まれている! » ということで、4や9を見つけたら、下の桁を全部8で埋めれば良い! » F(12345678) = F(12338888)みたいになります! » この処理を行った後に、先ほどの変換を行い、8進数から10進数にすれば 良い! 2014/4/19 31