Submit Search
Upload
全探索
•
Download as PPTX, PDF
•
6 likes
•
6,728 views
HCPC: 北海道大学競技プログラミングサークル
Follow
search
Read less
Read more
Technology
Report
Share
Report
Share
1 of 66
Download now
Recommended
論文紹介: Cuckoo filter: practically better than bloom
論文紹介: Cuckoo filter: practically better than bloom
Sho Nakazono
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
Ryosuke839
より深く知るオプティマイザとそのチューニング
より深く知るオプティマイザとそのチューニング
Yuto Hayamizu
平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム
Takuya Akiba
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
Marp Tutorial
Marp Tutorial
Rui Watanabe
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
Recommended
論文紹介: Cuckoo filter: practically better than bloom
論文紹介: Cuckoo filter: practically better than bloom
Sho Nakazono
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Pythonの理解を試みる 〜バイトコードインタプリタを作成する〜
Preferred Networks
不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
Ryosuke839
より深く知るオプティマイザとそのチューニング
より深く知るオプティマイザとそのチューニング
Yuto Hayamizu
平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム
Takuya Akiba
Pythonによる黒魔術入門
Pythonによる黒魔術入門
大樹 小倉
Marp Tutorial
Marp Tutorial
Rui Watanabe
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
Takateru Yamagishi
Parser combinatorってなんなのさ
Parser combinatorってなんなのさ
cct-inc
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
Hiro H.
実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた
Akihiro Kuwano
C#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
信之 岩永
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
NTT DATA Technology & Innovation
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
MITSUNARI Shigeo
マスター・オブ・Reflectパッケージ
マスター・オブ・Reflectパッケージ
Takuya Ueda
WebSocketのキホン
WebSocketのキホン
You_Kinjoh
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
Satoshi Yamada
C++の黒魔術
C++の黒魔術
Daichi OBINATA
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
Glibc malloc internal
Glibc malloc internal
Motohiro KOSAKI
今から始める Lens/Prism
今から始める Lens/Prism
Naoki Aoyama
並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ
Kohei KaiGai
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?
ichirin2501
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
Takeshi Yamamuro
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
Koichi Hamada
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
Meet inthemiddle
Meet inthemiddle
HCPC: 北海道大学競技プログラミングサークル
Binary indexed tree
Binary indexed tree
HCPC: 北海道大学競技プログラミングサークル
More Related Content
What's hot
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
Takateru Yamagishi
Parser combinatorってなんなのさ
Parser combinatorってなんなのさ
cct-inc
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
Hiro H.
実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた
Akihiro Kuwano
C#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
信之 岩永
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
NTT DATA Technology & Innovation
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
MITSUNARI Shigeo
マスター・オブ・Reflectパッケージ
マスター・オブ・Reflectパッケージ
Takuya Ueda
WebSocketのキホン
WebSocketのキホン
You_Kinjoh
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
Satoshi Yamada
C++の黒魔術
C++の黒魔術
Daichi OBINATA
中3女子でもわかる constexpr
中3女子でもわかる constexpr
Genya Murakami
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
masayoshi takahashi
Glibc malloc internal
Glibc malloc internal
Motohiro KOSAKI
今から始める Lens/Prism
今から始める Lens/Prism
Naoki Aoyama
並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ
Kohei KaiGai
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?
ichirin2501
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
Takeshi Yamamuro
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
Koichi Hamada
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
Takuya Akiba
What's hot
(20)
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
Parser combinatorってなんなのさ
Parser combinatorってなんなのさ
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
STLの型の使い分け(ダイジェスト版) @ Sapporo.cpp 第7回勉強会 (2014.10.18)
実環境にTerraform導入したら驚いた
実環境にTerraform導入したら驚いた
C#や.NET Frameworkがやっていること
C#や.NET Frameworkがやっていること
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
押さえておきたい、PostgreSQL 13 の新機能!! (PostgreSQL Conference Japan 2020講演資料)
SSE4.2の文字列処理命令の紹介
SSE4.2の文字列処理命令の紹介
マスター・オブ・Reflectパッケージ
マスター・オブ・Reflectパッケージ
WebSocketのキホン
WebSocketのキホン
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
PostgreSQLの実行計画を読み解こう(OSC2015 Spring/Tokyo)
C++の黒魔術
C++の黒魔術
中3女子でもわかる constexpr
中3女子でもわかる constexpr
何となく勉強した気分になれるパーサ入門
何となく勉強した気分になれるパーサ入門
Glibc malloc internal
Glibc malloc internal
今から始める Lens/Prism
今から始める Lens/Prism
並列クエリを実行するPostgreSQLのアーキテクチャ
並列クエリを実行するPostgreSQLのアーキテクチャ
なかったらINSERTしたいし、あるならロック取りたいやん?
なかったらINSERTしたいし、あるならロック取りたいやん?
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
LLVMで遊ぶ(整数圧縮とか、x86向けの自動ベクトル化とか)
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
「はじめてでもわかる RandomForest 入門-集団学習による分類・予測 -」 -第7回データマイニング+WEB勉強会@東京
プログラミングコンテストでのデータ構造 2 ~動的木編~
プログラミングコンテストでのデータ構造 2 ~動的木編~
Viewers also liked
Meet inthemiddle
Meet inthemiddle
HCPC: 北海道大学競技プログラミングサークル
Binary indexed tree
Binary indexed tree
HCPC: 北海道大学競技プログラミングサークル
Topological sort
Topological sort
HCPC: 北海道大学競技プログラミングサークル
ACPC2016Day3:C問題
ACPC2016Day3:C問題
HCPC: 北海道大学競技プログラミングサークル
ACPC2016Day3:G問題
ACPC2016Day3:G問題
HCPC: 北海道大学競技プログラミングサークル
ACPC2016Day3:D問題
ACPC2016Day3:D問題
HCPC: 北海道大学競技プログラミングサークル
ACPC2016Day3:F問題
ACPC2016Day3:F問題
HCPC: 北海道大学競技プログラミングサークル
ACPC2016Day3:E問題
ACPC2016Day3:E問題
HCPC: 北海道大学競技プログラミングサークル
C pub
C pub
HCPC: 北海道大学競技プログラミングサークル
G pub
G pub
HCPC: 北海道大学競技プログラミングサークル
F pub
F pub
HCPC: 北海道大学競技プログラミングサークル
A pub
A pub
HCPC: 北海道大学競技プログラミングサークル
二分探索をはじめからていねいに
二分探索をはじめからていねいに
HCPC: 北海道大学競技プログラミングサークル
動的計画法を極める!
動的計画法を極める!
HCPC: 北海道大学競技プログラミングサークル
D pub
D pub
HCPC: 北海道大学競技プログラミングサークル
B pub
B pub
HCPC: 北海道大学競技プログラミングサークル
E pub
E pub
HCPC: 北海道大学競技プログラミングサークル
Viewers also liked
(17)
Meet inthemiddle
Meet inthemiddle
Binary indexed tree
Binary indexed tree
Topological sort
Topological sort
ACPC2016Day3:C問題
ACPC2016Day3:C問題
ACPC2016Day3:G問題
ACPC2016Day3:G問題
ACPC2016Day3:D問題
ACPC2016Day3:D問題
ACPC2016Day3:F問題
ACPC2016Day3:F問題
ACPC2016Day3:E問題
ACPC2016Day3:E問題
C pub
C pub
G pub
G pub
F pub
F pub
A pub
A pub
二分探索をはじめからていねいに
二分探索をはじめからていねいに
動的計画法を極める!
動的計画法を極める!
D pub
D pub
B pub
B pub
E pub
E pub
More from HCPC: 北海道大学競技プログラミングサークル
写像 12 相
写像 12 相
HCPC: 北海道大学競技プログラミングサークル
ACPC 2017 Day3 F: 掛け算は楽しい
ACPC 2017 Day3 F: 掛け算は楽しい
HCPC: 北海道大学競技プログラミングサークル
ACPC 2017 Day3 D: 優柔不断
ACPC 2017 Day3 D: 優柔不断
HCPC: 北海道大学競技プログラミングサークル
ACPC 2019 Day3 G: Restricted DFS
ACPC 2019 Day3 G: Restricted DFS
HCPC: 北海道大学競技プログラミングサークル
ACPC 2019 Day3 F: 部分文字列分解
ACPC 2019 Day3 F: 部分文字列分解
HCPC: 北海道大学競技プログラミングサークル
ACPC 2019 Day3 E: 総和の切り取り
ACPC 2019 Day3 E: 総和の切り取り
HCPC: 北海道大学競技プログラミングサークル
ACPC 2019 Day3 B: パフェ
ACPC 2019 Day3 B: パフェ
HCPC: 北海道大学競技プログラミングサークル
ACPC 2019 Day3 A: 間違い探し
ACPC 2019 Day3 A: 間違い探し
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day2 G: 木
HUPC 2019 Day2 G: 木
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day2 E: ジャム
HUPC 2019 Day2 E: ジャム
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day2 H: Revenge of UMG
HUPC 2019 Day2 H: Revenge of UMG
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day2 F: MOD Rush
HUPC 2019 Day2 F: MOD Rush
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day2 C: 串刺し
HUPC 2019 Day2 C: 串刺し
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day1 F: グリッドの番号
HUPC 2019 Day1 F: グリッドの番号
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day1 E: 最短経路の復元
HUPC 2019 Day1 E: 最短経路の復元
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day1 D: 貪欲が最適?
HUPC 2019 Day1 D: 貪欲が最適?
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day1 C: 短絡評価
HUPC 2019 Day1 C: 短絡評価
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day1 B: 自身の 2 倍
HUPC 2019 Day1 B: 自身の 2 倍
HCPC: 北海道大学競技プログラミングサークル
HUPC 2019 Day1 A: four tea
HUPC 2019 Day1 A: four tea
HCPC: 北海道大学競技プログラミングサークル
Convex Hull Trick
Convex Hull Trick
HCPC: 北海道大学競技プログラミングサークル
More from HCPC: 北海道大学競技プログラミングサークル
(20)
写像 12 相
写像 12 相
ACPC 2017 Day3 F: 掛け算は楽しい
ACPC 2017 Day3 F: 掛け算は楽しい
ACPC 2017 Day3 D: 優柔不断
ACPC 2017 Day3 D: 優柔不断
ACPC 2019 Day3 G: Restricted DFS
ACPC 2019 Day3 G: Restricted DFS
ACPC 2019 Day3 F: 部分文字列分解
ACPC 2019 Day3 F: 部分文字列分解
ACPC 2019 Day3 E: 総和の切り取り
ACPC 2019 Day3 E: 総和の切り取り
ACPC 2019 Day3 B: パフェ
ACPC 2019 Day3 B: パフェ
ACPC 2019 Day3 A: 間違い探し
ACPC 2019 Day3 A: 間違い探し
HUPC 2019 Day2 G: 木
HUPC 2019 Day2 G: 木
HUPC 2019 Day2 E: ジャム
HUPC 2019 Day2 E: ジャム
HUPC 2019 Day2 H: Revenge of UMG
HUPC 2019 Day2 H: Revenge of UMG
HUPC 2019 Day2 F: MOD Rush
HUPC 2019 Day2 F: MOD Rush
HUPC 2019 Day2 C: 串刺し
HUPC 2019 Day2 C: 串刺し
HUPC 2019 Day1 F: グリッドの番号
HUPC 2019 Day1 F: グリッドの番号
HUPC 2019 Day1 E: 最短経路の復元
HUPC 2019 Day1 E: 最短経路の復元
HUPC 2019 Day1 D: 貪欲が最適?
HUPC 2019 Day1 D: 貪欲が最適?
HUPC 2019 Day1 C: 短絡評価
HUPC 2019 Day1 C: 短絡評価
HUPC 2019 Day1 B: 自身の 2 倍
HUPC 2019 Day1 B: 自身の 2 倍
HUPC 2019 Day1 A: four tea
HUPC 2019 Day1 A: four tea
Convex Hull Trick
Convex Hull Trick
Recently uploaded
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
Ryo Sasaki
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
taisei2219
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
Toru Tamaki
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
iPride Co., Ltd.
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
Toru Tamaki
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Toru Tamaki
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Yuma Ohgami
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
Hiroki Ichikura
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
sugiuralab
Recently uploaded
(9)
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
全探索
1.
すべての基本“全探索” 情報理工学コース3年 菊地 翔馬
2.
全探索とは しらみつぶしにすべての組み合わせを調べ、その中から解をさがす方法。 今回は、基本中の基本 ・深さ優先探索(Depth-First Search) ・幅優先探索(Breadth-First Search) を扱います。
3.
全探索の前に知っておいてほしい知識 その前に、全探索のコードの中で使う考え方やデータ構造 を覚えましょう。 ・再帰関数 ・スタック(stack) ・キュー(queue)
4.
再帰関数 再帰関数とは、関数の中で同じ関数を呼び出すことを再帰呼び出しといい、再 帰呼び出しをする関数を再帰関数といいます。 例:フィボナッチ数列を計算する関数int fib(int n) Int
fib( int n){ if(n <= 1) return n; //停止条件 return fib(n-1) + fib(n-2); // 関数fibの中で関数fibが呼び出されている } fib(0)=0 , fib(1)=1 , fib(2)=1, fib(3)=2 , fib(4)=3 , fib(5)=5 , fib(6)=8 , …
5.
fib(6)の再帰の様子 fib(6) fib(5) fib(4) fib(4) fib(3) fib(3) fib(2) fib(3) fib(2)
6.
fib(6)の再帰の様子 fib(6) fib(5) fib(4) fib(4) 2 2 1 fib(3) 1
7.
fib(6)の再帰の様子 fib(6) fib(5) 3 3 2 2 1 2 1
8.
fib(6)の再帰の様子 fib(6) 5 3 3 2 2 1 2 1
9.
fib(6)の再帰の様子 8 5 3 3 2 2 1 2 1
10.
スタックとキュー 次に、深さ優先探索と幅優先探索で用いられているデータ 構造を紹介します。
11.
データ構造って? そもそもデータ構造とは、計算機でデータを効率よく扱うために、 データの格納の形式がすでにできているもの。中身は配列をうまく 組み合わせたものなので、配列を使って同様のものを実装すること は可能であるが、C++やJavaでは標準ライブラリが用意されている ので、楽しく安全に使える。Cだとめんどくさい。 データ構造にはこれから紹介するスタックとキューや他に、リスト、 べクター、マップなどがある。
12.
スタック(stack) まずは、図のイメージから。
13.
push poppush push poppop スタック 本A
本A 本B 本A 本C 本A 本A
14.
出された本の順番は ① ③② 本B 本A本C
15.
スタック(stack) スタックは、pushとpopという二つの操作ができるデータ構造。Pushはスタック の一番上にデータを積む操作。Popは逆にスタックの一番上からデータを取り 出す操作。つまり、最後に入れた要素が最初に出てくる。(これをLIFO:Last In First Outと呼ぶ。) push 本A pop 本A 本B 本A
16.
キュー(queue) まずは、図のイメージから。
17.
push poppush push poppop キュー 本A 本B 本A 本C 本B 本B
本C
18.
出された本の順番は ① ③② 本B本A 本C
19.
キュー(queue) キューはスタックと同じように、pushとpopができるデータ構造。スタックと異なるのは、popが一 番上から取り出すのではなく、一番下から取り出す部分。つまり最初に入れたものが最初に出 てくる。(これをFIFO:First In First
Outと呼ぶ。) pop 本B 本A 本B push 本A
20.
再帰、スタック、キューの練習問題 再帰 最大公約数を求める http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_1_B&lang=jp フィボナッチ数列 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_10_A スタック 電車車両入替え http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0013&lang=jp 逆ポーランド記法 http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_3_A&lang=jp キュー ラウンドロビンスケジューリング http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=ALDS1_3_B&lang=jp
21.
深さ優先探索(Depth-First Search) 深さ優先(DFS: Depth-First
Search)とは、グラフの探索ア ルゴリズムの一つです。
22.
AOJ 0030 Sum
of Integers 問題 制限時間1sec n個の異なる数字で合計がsになるような組み合わせの数を出力せよ。ただし、各数字は0から9で あるとする。(1≤n≤ 9、0≤s≤100) 例: n = 3、s = 6の時は 1 + 2 + 3 = 6 0 + 1 + 5 = 6 0 + 2 + 4 = 6 の3通りなので、答えは3。 どうやって解く?
23.
素直な解法 各数字に対して、ループ文を回して探す。 For i= 0
to 9 For j = 0 to 9 For k = 0 to 9 … if i + j + k + …. == s then ans++ Return ans これだと10 𝑛回計算することになるので、最悪で109回計算することになる。実はこれ1秒じゃ終 わらない・・・。 1秒は107 〜108回くらい。
24.
1 2 3 4 5 6 7 8 9 10 11 状態の遷移の順番
25.
深さ優先探索(Depth-First Search) ある状態から出発し、遷移できなくなるまで状態を進めて いき、遷移できなくなったら1つ前の状態に戻るということを 繰り返して解を見つける。 一番はじめの状態から遷移を繰り返せば、たどり着ける全 ての状態を見ることになります。したがって、全ての状態に 対して操作を施したり、全状態を列挙したりできます。
26.
DFSはスタックを(暗に)使っている DFSを書くとき、コードの中にスタックが出てくることはない のですが、DFSでスタックを使ってる様子を図で見て見ま しょう。 考え方は、あるノードを探索したら、そこからいける全ての ノードをスタックに入れ、また先頭のノードを探索していきま す。
27.
push 1 pop 1 1 2 7 3 6 4
5 8 9 10 11
28.
push 1 pop 2,7 7 2 1 2 7 3 6 4
5 8 9 10 11
29.
push pop 2 7 6 3,6 3 1 2 7 3
6 4 5 8 9 10 11
30.
push 4,5 7 6 5 3 4 pop 1 2 7 3 6 4
5 8 9 10 11
31.
pushpush 7 6 5 4 pop 1 2 7 3 6 4
5 8 9 10 11
32.
pushpush 7 6 5 pop 1 2 7 3 6 4
5 8 9 10 11
33.
pushpush 7 6 pop 1 2 7 3 6 4
5 8 9 10 11
34.
pushpush 11 8 7 pop 8,11 1 2 7 3 6 4
5 8 9 10 11
35.
pushpush 11 10 8 pop 9,10 9 1 2 7 3 6 4
5 8 9 10 11
36.
pushpush 11 10 9 pop 1 2 7 3 6 4
5 8 9 10 11
37.
pushpush 11 10 pop 1 2 7 3 6 4
5 8 9 10 11
38.
pushpush 11 pop 1 2 7 3 6 4
5 8 9 10 11
39.
40.
depth=3,s=3,n=1 depth=2,s=5,n=2 depth=1,s=6,n=3 depth=0,s=6,n=3 ・・・0 ・・・1 ・・・2 ・・・3 depth=4,s=0,n=0
41.
計算量のお話 0〜9の数字をそれぞれ、選ぶ、選ばないという状態がある ので、状態数は2 𝑛+1 − 1なのでO(2
𝑛 )になります。 今回だと大きくても210 回なので大丈夫 ここで状態数とは、さっきのグラフの○の数のこと。
42.
計算量のお話 深さ優先探索や幅優先探索は、全ての状態を探索するの で、計算量はO(|V|)になる。|V|は頂点数。
43.
計算量のお話 そもそも計算量とは? →問題を解くのにどれくらいの計算をするか。 競技プログラミングではプログラム自体の速度も重要になるので必要な計算。自分で計算して プログラムが制限時間以内に間に合うかどうかを見積もる。 O(N),O(logN),O(𝑁2),O(2 𝑛)とか書くことが多い。 教養の微積分学でランダウの記号をやったと思うけどそれと同じ感じ。 X→∞の時、f(x) =
3𝑥2 + 4x+ 5 は f(x) = O(𝑥2) である。
44.
DFSを使って解く問題 Sum of Intager http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0030&lang=jprs Ball http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0033 Split
Up! http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1045
45.
幅優先探索(Breadth-First Search) 幅優先探索(BFS:Breadth-First Search)も、グラフの探索ア ルゴリズムの一つです。
46.
1 2 4 8 9 5 3 6 10 11 7 状態の遷移の順番
47.
幅優先探索(Breadth-First Search) ある状態から出発し、近いところから状態を進めていく。 つまり、 最短1回の遷移でたどり着ける状態 ↓ 最短2回の遷移でたどり着ける状態 ↓ 最短3回の遷移でたどり着ける状態 ↓ : という順に探索します。
48.
BFSはキューを使う DFSでは、スタックは書かなくても良いのですが、BFSの場合 はキューを書く必要があります。なのでCだとつらい。 ただ、考え方はDFSと同じで、あるノードを探索したら、そこ からいける全てのノードをキューに入れ、また先頭のノード を探索していきます。
49.
push 1 pop 1 1 2 3 4 5 8
9 6 10 11 7
50.
push 2 pop 2,3 1 3 1 2 3 4
5 8 9 6 10 11 7
51.
push 3 pop 4,5 2 4 5 1 2 3 4
5 8 9 6 10 11 7
52.
push 4 pop 6,7 3 5 6 7 1 2 3 4
5 8 9 6 10 11 7
53.
push 5 pop 8,9 4 6 7 8 9 1 2 3 4
5 8 9 6 10 11 7
54.
push 6 pop 5 7 8 9 1 2 3 4 5 8
9 6 10 11 7
55.
push 7 pop 6 8 9 10 11 10,11 1 2 3 4 5 8
9 6 10 11 7
56.
push 8 pop 7 9 10 11 1 2 3 4 5 8
9 6 10 11 7
57.
push 9 pop 8 10 11 1 2 3 4 5 8
9 6 10 11 7
58.
push 10 pop 9 11 1 2 3 4 5 8
9 6 10 11 7
59.
push 11 pop 10 1 2 3 4 5 8
9 6 10 11 7
60.
push pop 11 1 2 3 4
5 8 9 6 10 11 7
61.
二次元配列のようなものも解ける!! 問題:迷路の最短路 大きさがN×Mの迷路が与えられます。迷路は壁と通路からできており、1ターンに隣接する上 下左右4マスの通路へ移動することができます。スタートからゴールまで移動するのに必要な 最小のターン数を求めなさい。 入力例:N=10,M=10
62.
入力例: #,.,S,Gはそれぞれ、壁、通路、スタート、ゴール N=10,M=10 #S######.# ......#..# .#.##.##.# .#........ ##.##.#### ....#....# .#######.# ....#..... .####.###. ....#...G#
63.
64.
65.
計算量 状態数は各マスのことなので、N×M。Loopごとに4方向のfor文を回すので4NM。 よってO(NM)になる。
66.
BFSを使って解く問題 Seven Puzzle http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0121 Stray Twins http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0223 Mysterious
Worm http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=0179 Amazing Mazes http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=1166&lang=jp
Download now