Submit Search
Upload
AtCoder Beginner Contest 007 解説
•
3 likes
•
16,099 views
A
AtCoder Inc.
Follow
AtCoder Beginner Contest 007 解説
Read less
Read more
Education
Report
Share
Report
Share
1 of 31
Download now
Download to read offline
Recommended
AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説
AtCoder Inc.
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説
AtCoder Inc.
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説
AtCoder Inc.
AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説
AtCoder Inc.
AtCoder Beginner Contest 018 解説
AtCoder Beginner Contest 018 解説
AtCoder Inc.
AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説
AtCoder Inc.
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
AtCoder Inc.
AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説
AtCoder Inc.
Recommended
AtCoder Beginner Contest 006 解説
AtCoder Beginner Contest 006 解説
AtCoder Inc.
AtCoder Regular Contest 039 解説
AtCoder Regular Contest 039 解説
AtCoder Inc.
AtCoder Beginner Contest 012 解説
AtCoder Beginner Contest 012 解説
AtCoder Inc.
AtCoder Beginner Contest 015 解説
AtCoder Beginner Contest 015 解説
AtCoder Inc.
AtCoder Beginner Contest 018 解説
AtCoder Beginner Contest 018 解説
AtCoder Inc.
AtCoder Beginner Contest 021 解説
AtCoder Beginner Contest 021 解説
AtCoder Inc.
AtCoder Beginner Contest 023 解説
AtCoder Beginner Contest 023 解説
AtCoder Inc.
AtCoder Beginner Contest 022 解説
AtCoder Beginner Contest 022 解説
AtCoder Inc.
AtCoder Beginner Contest 005 解説
AtCoder Beginner Contest 005 解説
AtCoder Inc.
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説
AtCoder Inc.
AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説
AtCoder Inc.
abc032
abc032
AtCoder Inc.
AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説
AtCoder Inc.
ABC001 解説
ABC001 解説
AtCoder Inc.
動的計画法を極める!
動的計画法を極める!
HCPC: 北海道大学競技プログラミングサークル
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説
AtCoder Inc.
AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説
AtCoder Inc.
AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説
AtCoder Inc.
AtCoder Regular Contest 035 解説
AtCoder Regular Contest 035 解説
AtCoder Inc.
abc027
abc027
AtCoder Inc.
AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説
AtCoder Inc.
AtCoder Beginner Contest 016 解説
AtCoder Beginner Contest 016 解説
AtCoder Inc.
Indeedなう A日程 解説
Indeedなう A日程 解説
AtCoder Inc.
AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説
AtCoder Inc.
AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説
AtCoder Inc.
Abc009
Abc009
AtCoder Inc.
AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説
AtCoder Inc.
AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説
AtCoder Inc.
AtCoder Beginner Contest 004 解説
AtCoder Beginner Contest 004 解説
AtCoder Inc.
AtCoder Beginner Contest 011 解説
AtCoder Beginner Contest 011 解説
AtCoder Inc.
More Related Content
What's hot
AtCoder Beginner Contest 005 解説
AtCoder Beginner Contest 005 解説
AtCoder Inc.
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説
AtCoder Inc.
AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説
AtCoder Inc.
abc032
abc032
AtCoder Inc.
AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説
AtCoder Inc.
ABC001 解説
ABC001 解説
AtCoder Inc.
動的計画法を極める!
動的計画法を極める!
HCPC: 北海道大学競技プログラミングサークル
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説
AtCoder Inc.
AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説
AtCoder Inc.
AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説
AtCoder Inc.
AtCoder Regular Contest 035 解説
AtCoder Regular Contest 035 解説
AtCoder Inc.
abc027
abc027
AtCoder Inc.
AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説
AtCoder Inc.
AtCoder Beginner Contest 016 解説
AtCoder Beginner Contest 016 解説
AtCoder Inc.
Indeedなう A日程 解説
Indeedなう A日程 解説
AtCoder Inc.
AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説
AtCoder Inc.
AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説
AtCoder Inc.
Abc009
Abc009
AtCoder Inc.
AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説
AtCoder Inc.
AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説
AtCoder Inc.
What's hot
(20)
AtCoder Beginner Contest 005 解説
AtCoder Beginner Contest 005 解説
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 035 解説
AtCoder Beginner Contest 008 解説
AtCoder Beginner Contest 008 解説
abc032
abc032
AtCoder Beginner Contest 030 解説
AtCoder Beginner Contest 030 解説
ABC001 解説
ABC001 解説
動的計画法を極める!
動的計画法を極める!
CODE FESTIVAL 2014 本選 解説
CODE FESTIVAL 2014 本選 解説
AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 002 解説
AtCoder Beginner Contest 010 解説
AtCoder Beginner Contest 010 解説
AtCoder Regular Contest 035 解説
AtCoder Regular Contest 035 解説
abc027
abc027
AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 025 解説
AtCoder Beginner Contest 016 解説
AtCoder Beginner Contest 016 解説
Indeedなう A日程 解説
Indeedなう A日程 解説
AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 034 解説
AtCoder Beginner Contest 014 解説
AtCoder Beginner Contest 014 解説
Abc009
Abc009
AtCoder Regular Contest 031 解説
AtCoder Regular Contest 031 解説
AtCoder Beginner Contest 017 解説
AtCoder Beginner Contest 017 解説
Viewers also liked
AtCoder Beginner Contest 004 解説
AtCoder Beginner Contest 004 解説
AtCoder Inc.
AtCoder Beginner Contest 011 解説
AtCoder Beginner Contest 011 解説
AtCoder Inc.
AtCoder Beginner Contest 003 解説
AtCoder Beginner Contest 003 解説
AtCoder Inc.
AtCoder Beginner Contest 019 解説
AtCoder Beginner Contest 019 解説
AtCoder Inc.
AtCoder Beginner Contest 013 解説
AtCoder Beginner Contest 013 解説
AtCoder Inc.
AtCoder Beginner Contest 020 解説
AtCoder Beginner Contest 020 解説
AtCoder Inc.
AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説
AtCoder Inc.
AtCoder Regular Contest 048
AtCoder Regular Contest 048
AtCoder Inc.
abc031
abc031
AtCoder Inc.
Square869120 contest #2
Square869120 contest #2
AtCoder Inc.
AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組み
AtCoder Inc.
AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説
AtCoder Inc.
Viewers also liked
(12)
AtCoder Beginner Contest 004 解説
AtCoder Beginner Contest 004 解説
AtCoder Beginner Contest 011 解説
AtCoder Beginner Contest 011 解説
AtCoder Beginner Contest 003 解説
AtCoder Beginner Contest 003 解説
AtCoder Beginner Contest 019 解説
AtCoder Beginner Contest 019 解説
AtCoder Beginner Contest 013 解説
AtCoder Beginner Contest 013 解説
AtCoder Beginner Contest 020 解説
AtCoder Beginner Contest 020 解説
AtCoder Beginner Contest 029 解説
AtCoder Beginner Contest 029 解説
AtCoder Regular Contest 048
AtCoder Regular Contest 048
abc031
abc031
Square869120 contest #2
Square869120 contest #2
AtCoderに毎回参加したくなる仕組み
AtCoderに毎回参加したくなる仕組み
AtCoder Beginner Contest 024 解説
AtCoder Beginner Contest 024 解説
Similar to AtCoder Beginner Contest 007 解説
AtCoder Beginner Contest 026 解説
AtCoder Beginner Contest 026 解説
AtCoder Inc.
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
Shin Ise
タダで始めるテストファースト入門 ~ C# Express + NUnit
タダで始めるテストファースト入門 ~ C# Express + NUnit
Yasuhiko Yamamoto
Tokyo r38
Tokyo r38
Takashi Minoda
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
Ryosuke839
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
AtCoder Inc.
最近の単体テスト
最近の単体テスト
Ken Morishita
Tokyo r30 beginner
Tokyo r30 beginner
Takashi Minoda
PFI Christmas seminar 2009
PFI Christmas seminar 2009
Preferred Networks
リテラル文字列型までの道
リテラル文字列型までの道
Satoshi Sato
Using Deep Learning for Recommendation
Using Deep Learning for Recommendation
Eduardo Gonzalez
AtCoder Regular Contest 032 解説
AtCoder Regular Contest 032 解説
AtCoder Inc.
LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門
Yuichiro Kobayashi
Coding Interview
Coding Interview
信之 岩永
Active Learning 入門
Active Learning 入門
Shuyo Nakatani
今日からできる構造学習(主に構造化パーセプトロンについて)
今日からできる構造学習(主に構造化パーセプトロンについて)
syou6162
C言語講習会1
C言語講習会1
odenhadengaku
111015 tokyo scipy2_ディスカッション
111015 tokyo scipy2_ディスカッション
Shohei Hido
Unity + C#講座①
Unity + C#講座①
Yu Yu
Iterators must-go(ja)
Iterators must-go(ja)
Akira Takahashi
Similar to AtCoder Beginner Contest 007 解説
(20)
AtCoder Beginner Contest 026 解説
AtCoder Beginner Contest 026 解説
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
すごいHaskell読書会 in 大阪 #4 「第6章 モジュール」
タダで始めるテストファースト入門 ~ C# Express + NUnit
タダで始めるテストファースト入門 ~ C# Express + NUnit
Tokyo r38
Tokyo r38
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
実践・最強最速のアルゴリズム勉強会 第一回 講義資料(ワークスアプリケーションズ & AtCoder)
最近の単体テスト
最近の単体テスト
Tokyo r30 beginner
Tokyo r30 beginner
PFI Christmas seminar 2009
PFI Christmas seminar 2009
リテラル文字列型までの道
リテラル文字列型までの道
Using Deep Learning for Recommendation
Using Deep Learning for Recommendation
AtCoder Regular Contest 032 解説
AtCoder Regular Contest 032 解説
LET2011: Rによる教育データ分析入門
LET2011: Rによる教育データ分析入門
Coding Interview
Coding Interview
Active Learning 入門
Active Learning 入門
今日からできる構造学習(主に構造化パーセプトロンについて)
今日からできる構造学習(主に構造化パーセプトロンについて)
C言語講習会1
C言語講習会1
111015 tokyo scipy2_ディスカッション
111015 tokyo scipy2_ディスカッション
Unity + C#講座①
Unity + C#講座①
Iterators must-go(ja)
Iterators must-go(ja)
More from AtCoder Inc.
TCO2017R1
TCO2017R1
AtCoder Inc.
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
AtCoder Inc.
Chokudai Contest 001
Chokudai Contest 001
AtCoder Inc.
AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説
AtCoder Inc.
MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説
AtCoder Inc.
AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説
AtCoder Inc.
DDPC 2016 予選 解説
DDPC 2016 予選 解説
AtCoder Inc.
arc047
arc047
AtCoder Inc.
CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説
AtCoder Inc.
AtCoder Regular Contest 046
AtCoder Regular Contest 046
AtCoder Inc.
CODE FESTIVAL 2015 解説
CODE FESTIVAL 2015 解説
AtCoder Inc.
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説
AtCoder Inc.
AtCoder Regular Contest 045 解説
AtCoder Regular Contest 045 解説
AtCoder Inc.
CODE FESTIVAL 2015 予選A 解説
CODE FESTIVAL 2015 予選A 解説
AtCoder Inc.
AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説
AtCoder Inc.
AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説
AtCoder Inc.
天下一プログラマーコンテスト2015 予選B 解説
天下一プログラマーコンテスト2015 予選B 解説
AtCoder Inc.
AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説
AtCoder Inc.
天下一プログラマーコンテスト2015 予選A E問題 解説
天下一プログラマーコンテスト2015 予選A E問題 解説
AtCoder Inc.
AtCoder Regular Contest 042 解説
AtCoder Regular Contest 042 解説
AtCoder Inc.
More from AtCoder Inc.
(20)
TCO2017R1
TCO2017R1
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Disco Presents ディスカバリーチャンネルプログラミングコンテスト2016 本選 解説
Chokudai Contest 001
Chokudai Contest 001
AtCoder Regular Contest 049 解説
AtCoder Regular Contest 049 解説
MUJINプログラミングチャレンジ2016 解説
MUJINプログラミングチャレンジ2016 解説
AtCoder Beginner Contest 033 解説
AtCoder Beginner Contest 033 解説
DDPC 2016 予選 解説
DDPC 2016 予選 解説
arc047
arc047
CODE FESTIVAL 2015 沖縄ツアー 解説
CODE FESTIVAL 2015 沖縄ツアー 解説
AtCoder Regular Contest 046
AtCoder Regular Contest 046
CODE FESTIVAL 2015 解説
CODE FESTIVAL 2015 解説
CODE FESTIVAL 2015 予選B 解説
CODE FESTIVAL 2015 予選B 解説
AtCoder Regular Contest 045 解説
AtCoder Regular Contest 045 解説
CODE FESTIVAL 2015 予選A 解説
CODE FESTIVAL 2015 予選A 解説
AtCoder Regular Contest 044 解説
AtCoder Regular Contest 044 解説
AtCoder Beginner Contest 028 解説
AtCoder Beginner Contest 028 解説
天下一プログラマーコンテスト2015 予選B 解説
天下一プログラマーコンテスト2015 予選B 解説
AtCoder Regular Contest 043 解説
AtCoder Regular Contest 043 解説
天下一プログラマーコンテスト2015 予選A E問題 解説
天下一プログラマーコンテスト2015 予選A E問題 解説
AtCoder Regular Contest 042 解説
AtCoder Regular Contest 042 解説
Recently uploaded
Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdf
oganekyokoi
Registration of travel agents - 'Explanation of the registration system under...
Registration of travel agents - 'Explanation of the registration system under...
oganekyokoi
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhr
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhr
RodolfFernandez1
What I did before opening my business..pdf
What I did before opening my business..pdf
oganekyokoi
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要 パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要 パワーポイント
shu1108hina1020
Establishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdf
oganekyokoi
レポートの書き方講座 [大学生初年次向けに対する講義資料] Lecture on how to write a report [lecture mater...
レポートの書き方講座 [大学生初年次向けに対する講義資料] Lecture on how to write a report [lecture mater...
yutakashikano1984
The first time I used CANVA to create a slide document.
The first time I used CANVA to create a slide document.
oganekyokoi
International Politics I - Lecture 1
International Politics I - Lecture 1
Toru Oga
Recently uploaded
(9)
Divorce agreements in administrative work.pdf
Divorce agreements in administrative work.pdf
Registration of travel agents - 'Explanation of the registration system under...
Registration of travel agents - 'Explanation of the registration system under...
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhr
KARAPATANG PANTAO.pptxhrhrhrhrhrhrhrhrhr
What I did before opening my business..pdf
What I did before opening my business..pdf
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要 パワーポイント
3年前期 交通基盤工学 第一回 ガイダンス 交通基盤工学の概要 パワーポイント
Establishment and operation of medical corporations.pdf
Establishment and operation of medical corporations.pdf
レポートの書き方講座 [大学生初年次向けに対する講義資料] Lecture on how to write a report [lecture mater...
レポートの書き方講座 [大学生初年次向けに対する講義資料] Lecture on how to write a report [lecture mater...
The first time I used CANVA to create a slide document.
The first time I used CANVA to create a slide document.
International Politics I - Lecture 1
International Politics I - Lecture 1
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
16.
C問題 アルゴリズム • 問題文に掛かれている通りに実装しよう! 2014/4/19
16
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
Download now