Senshu lt
- 2. • 井上 祐馬
• 北海道大学 情報科学研究科 M2
• TwitterとかプロコンのID: @Darsein
• 研究: おねえさんの救出 πDD
• 好きなもの:あずにゃん、ドーナツ
• ICPC 2010,2012 アジア地区予選出場
• TopCoder SRM Rate 1638 (2013/06/03現在)
自己紹介
13年6月8日土曜日
- 6. 本題
• 昨今、国内予選突破には 3問速解き∼4問 必要
• 「Dクラスの問題を解けるか」が鍵
• もちろんA,B,Cをしっかり通せることも大事
年 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012
突破
ライン
1+ 2 2+ 2+ 3 3 3 3+ 3 3+ 3+ 3+
13年6月8日土曜日
- 8. 近年の動向
年 2007 2008 2009 2010 2011 2012
C シミュレーション DFS+構文解析 DFS DP DFS シミュレーション
D ダイクストラ ダイクストラ ダイクストラ DFS DP ダイクストラ
E 幾何 幾何 マッチング DFS/ダイクストラ DP 幾何+ダイクストラ
13年6月8日土曜日
- 11. BFS(Breath-First Search)
• 一番最初に見つけたものから順に調べてい
く探索
= FIFO = キュー
• キューを使ったループを用いる
• 最短路を保証
1
7
5
3
4
6
2vector<int> graph[V];
queue<int> q;
while(q.size()){
int x = q.front(); q.pop();
if(visit[x])continue;
visit[x] = true;
for(int i=0;i<graph[x].size();i++)q.push(graph[x][i]);
}
13年6月8日土曜日
- 14. 動的計画法
• dp[i][j]: i番目までのアイテムで総重量がちょ
うどjになるときの最大価値
• dp[i][j] = max(dp[i-1][j], dp[i-1][j-w[i]]+v[i])
• 例: n=4, S=10, {(9,8), (3,3), (7,6), (8,5)}
i\j 0 1 2 3 4 5 6 7 8 9 10
0 0 - - - - - - - - - -
1 0 - - - - - - - 9 - -
2 0 - - 3 - - - - 9 - -
3 0 - - 3 - - 7 - 9 10 -
4 0 - - 3 - 8 7 - 11 10 -
13年6月8日土曜日
- 15. 動的計画法
• dp[i][j]: i番目までのアイテムで総重量がちょ
うどjになるときの最大価値
• dp[i][j] = max(dp[i-1][j], dp[i-1][j-w[i]]+v[i])
• 例: n=4, S=10, {(9,8), (3,3), (7,6), (8,5)}
i\j 0 1 2 3 4 5 6 7 8 9 10
0 0 - - - - - - - - - -
1 0 - - - - - - - 9 - -
2 0 - - 3 - - - - 9 - -
3 0 - - 3 - - 7 - 9 10 -
4 0 - - 3 - 8 7 - 11 10 -
13年6月8日土曜日
- 16. 0,0
1,0
2,0
3,0
4,0
2,3
3,3
4,3 4,5 4,6
3,6
2,8
1,8
3,8
4,8
3,9
4,9
動的計画法
• dp[i][j]: i番目までのアイテムで総重量がちょ
うどjになるときの最大価値
• dp[i][j] = max(dp[i-1][j], dp[i-1][j-w[i]]+v[i])
• 例: n=4, S=10, {(9,8), (3,3), (7,6), (8,5)}
13年6月8日土曜日
- 17. 0,0
1,0
2,0
3,0
4,0
2,3
3,3
4,3 4,5 4,6
3,6
2,8
1,8
3,8
4,8
3,9
4,9
動的計画法
• DPはグラフだった!!!
• この辺の話は@tayama0324さんのDPの話
という記事を読むとよい。DP観が変わる。
13年6月8日土曜日
- 18. 結局 D はグラフ
•DFSは探索木( グラフ)を適当な順番に
探索
•BFSは探索木を根に近い方から探索
•ダイクストラはコスト付きグラフを近
い方から探索
•DPは状態グラフをループ順に探索
13年6月8日土曜日
- 20. 探索問題の解き方
• グラフを構築します( ◠‿◠ )
どのような状態を頂点にするか、辺にあたる遷移はどう
なっているか
• グラフの特徴を分析します(́・・`)
探索すべき順序に規則などはあるか
• 探索アルゴリズムを考えます( ◠◠ )
ICPCならだいたいさっきのDFS,BFS,Dijkstra,DPくらい
• 実装します(́・・`)
ガンバルンバ∼(^o^)
• AC!!
✌('ω'✌ )三✌('ω')✌三( ✌'ω')✌
13年6月8日土曜日