2014/03/24
山下 洋史
@utatakiyoshi
2013 JOI春合宿 Day4
漢字しりとり(Kanji Shiritori) 解説
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
・問題文が 7 ページもありますが,
 ちゃんと読みましたか?
・最近の IOI は Reactive な出題が多く,
 問題文が長くな...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
概要
3
Anna
1
3
10
20
30
40
50
の視点
0
2
  →  の最短経路は?0 1
というクエリが Q 個飛んでく...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
Anna
概要
4
  →  の最短経路は?0 11
3
10
20
30
40
50
の視点
0
2
というクエリが Q 個飛んでくる...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
概要
5
1
3
10
[ ??? ]
30
[ ??? ]
50
の視点
  →  の最短経路は?0 1
0
2
Bruno
というク...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
概要
6
Anna
1
3
10
20
30
40
50
の視点
0
2
  →  の最短経路は?0 1
というクエリが Q 個飛んでく...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
概要
7
010010010...011
Anna Bruno
L個
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題
・小課題 1 [10点] (L ≦ 1000 いろいろ小さい)
・小課題 2 [22点] (L ≦ 180)
・小課題 3 [ ...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
制約
すべての入力データは以下の条件を満たす.
• 2 ≦ N ≦ 300.
• 1 ≦ M ≦ N × (N−1).
• 0 ≦ Ai...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
重要な制約
・N ≦ 300
・Q ≦ 60
・Ci ≦ 1016 (< 254)
・K ≦ 5
・A[U0] = A[U1] = .....
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 1’ (10点)
・ Q ≦ 10
・ 答えのサイズ = W ≦ 10
・ L ≦ 1000
→ Anna で最短路して,答えを...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 1’ (10点)
・ Q ≦ 10
・ 答えのサイズ = W ≦ 10
・ L ≦ 1000
→ Anna が Uk のコストを...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
重要な考察
最短経路はこの 6 通りしかない
13
TS
V
赤い辺 を通らない
Uk を通る
こんなものはいらない
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
重要な考察
とりあえず番号付け
14
TS
V
パス 1~5
パス 0
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 2 (22点)
・この 6 (=K+1) 通りのどれを通るかを送る
・1クエリあたり 3 bit
・Q × 3 = 60 × 3...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
数字を0/1列で送る
一般的なテク
・0 ≦ a < 5, 0 ≦ b < 5, 0 ≦ c < 10 を送りたい
・そのまま送ると
 ...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 3 (8点)
・ 3つずつまとめて送る
・x,y,z を送るとき,36x + 6y + z を送る
・6 × 6 × 6 = 2...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
Compare(j, a, b):
 問題 j でパス a とパス b はどっちが短い?
これが 0 ≦ j < Q, 0 ≦ a ≦ ...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説19
a+1 < b+4 なら 問題 1 は上ルートが勝ち
a+1 < b+5 なら 問題 2 は上ルートが勝ち
V
14 b
a
T2S...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説20
V
4 b
a
a-b < -1+4 なら 問題 1 は上ルートが勝ち
a-b < -1+5 なら 問題 2 は上ルートが勝ち
T2...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
V
1
4 b
a
T2S2
S1
1
T1
4
1
5
の視点Bruno
21
どの問題についても
a-b を定数と比べる形
a-b ...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説22
V
1
4
a
a-0 < -2+5 なら 問題 1 は中ルートが勝ち
a-0 < -8+9 なら 問題 2 は中ルートが勝ち
T2...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説23
a-b < -3 なら 問題 1 は上ルートが勝ち
a-b < -1 なら 問題 2 は上ルートが勝ち
a-b < 4 なら 問題 ...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 4 (40点)
・パス a と パス b の比較で パス a が勝つのはいくつか?
 を送る.
・「パス a 勝ち」の個数が分か...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 4 の解のイメージ
25
Anna Bruno
0 vs 1 0 vs 2 1 vs 2
Q1
Q1
Q1
0 vs 1 0 v...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 4 の解のイメージ
26
Anna Bruno
0 vs 1 0 vs 2 1 vs 2
Q1
Q1
Q1
0 vs 1 0 v...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 4 の解のイメージ
27
Anna Bruno
0 vs 1 0 vs 2 1 vs 2
Q1
Q1
Q1
0 vs 1 0 v...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 4 (40点)
・パス a と パス b の比較で パス a が勝つのはいくつか?
 を送る.
・「パス a 勝ち」の個数が分か...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 4 の解のイメージ
29
Anna Bruno
0 vs 1 0 vs 2 1 vs 2
Q1
Q1
Q1
0 vs 1 0 v...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
パス 1 と比較 パス 2 と比較
Q7
Q8
Q9
Q4
Q5
Q6
Q1
Q2
Q3
Q7
Q8
Q9
Q4
Q5
Q6
Q1
Q2...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 5 (20点)
使う Compare は
・Compare(?, 0, 1) : 9個
・Compare(?, 0, 2) : ...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 5 (20点)
・Compare(?, a, b) を使う個数を Xab とする
・左が勝つのは何個かを送る.(0 ~ Xab ...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 5 の解のイメージ
33
Anna
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 5 の解のイメージ
34
Anna
4
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 5 の解のイメージ
35
Anna
4
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 5 の解のイメージ
36
Anna
4, 2, 1
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 5 の解のイメージ
37
Anna
4, 2, 1
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 5 の解のイメージ
38
Anna
4, 2, 1, 1, 2, 0
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 5 の解のイメージ
39
Anna
4, 2, 1, 1, 2, 0, ...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 5 の解のイメージ
40
Bruno
4, 2, 1, 1, 2, 0, ...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 5 の解のイメージ
41
Bruno
4, 2, 1, 1, 2, 0, ...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 5 の解のイメージ
42
Bruno
2, 1, 1, 2, 0, ...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 5 の解のイメージ
43
Bruno
2, 1, 1, 2, 0, ...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 5 の解のイメージ
44
Bruno
1, 2, 0, ...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 5 の解のイメージ
45
Bruno
1, 2, 0, ...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 5 の解のイメージ
46
Bruno
...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
小課題 5 (20点)
・Compare(?, a, b) を呼ぶ回数を Cab とする
・それぞれ小課題 4 と同じように送る
 (ま...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
諸注意
・long long (引数の型見てネ)
・パス i が無い ([???]の辺を消すと非連結になる)
・グラフが密なので Dij...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
Warshall-Floyd 法
49
全頂点対間の最短距離を求めます
1 ∼ (k-1)
i j
1 ∼ (k-1) だけを通って行く...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
Warshall-Floyd 法
50
i j
k
(i → k) + (k → j) が (i → j) より短かったら
i → (1...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
Warshall-Floyd 法
51
i j
k
(i → k) + (k → j) が (i → j) より短かったら
i → j ...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
Warshall-Floyd 法
for (k = 1 ... N){
for (i = 1 ... N){
for (j = 1 .....
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
経路復元
53
i j
k
next ( i → j ) : i → j の経路で初めにたどる辺
更新 : next ( i → j )...
2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
点数
54
0
25
50
75
100
1位
Upcoming SlideShare
Loading in …5
×

2013 JOI春合宿 Day4 漢字しりとり (Kanji Shiritori) 解説

651 views

Published on

2013 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
651
On SlideShare
0
From Embeds
0
Number of Embeds
30
Actions
Shares
0
Downloads
3
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

2013 JOI春合宿 Day4 漢字しりとり (Kanji Shiritori) 解説

  1. 1. 2014/03/24 山下 洋史 @utatakiyoshi 2013 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説
  2. 2. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 ・問題文が 7 ページもありますが,  ちゃんと読みましたか? ・最近の IOI は Reactive な出題が多く,  問題文が長くなる傾向にあります ・時間はたっぷりあるので,焦らずに読んでください はじめに 2
  3. 3. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 概要 3 Anna 1 3 10 20 30 40 50 の視点 0 2   →  の最短経路は?0 1 というクエリが Q 個飛んでくる N頂点 M辺 の有向グラフ
  4. 4. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 Anna 概要 4   →  の最短経路は?0 11 3 10 20 30 40 50 の視点 0 2 というクエリが Q 個飛んでくる N頂点 M辺 の有向グラフ
  5. 5. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 概要 5 1 3 10 [ ??? ] 30 [ ??? ] 50 の視点   →  の最短経路は?0 1 0 2 Bruno というクエリが Q 個飛んでくる N頂点 M辺 の有向グラフ コストが[ ??? ]の辺が K 本
  6. 6. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 概要 6 Anna 1 3 10 20 30 40 50 の視点 0 2   →  の最短経路は?0 1 というクエリが Q 個飛んでくる N頂点 M辺 の有向グラフ Bruno は この辺の 長さを知らないらしい
  7. 7. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 概要 7 010010010...011 Anna Bruno L個
  8. 8. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 ・小課題 1 [10点] (L ≦ 1000 いろいろ小さい) ・小課題 2 [22点] (L ≦ 180) ・小課題 3 [ 8点] (L ≦ 160) ・小課題 4 [40点] (L ≦ 90) ・小課題 5 [20点] (L ≦ 64) 8
  9. 9. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 制約 すべての入力データは以下の条件を満たす. • 2 ≦ N ≦ 300. • 1 ≦ M ≦ N × (N−1). • 0 ≦ Ai < N (0 ≦ i < M). • 0 ≦ Bi < N (0 ≦ i < M). • Ai ≠ Bi (0 ≦ i < M). • (Ai,Bi) ≠ (Aj,Bj) (0 ≦ i < j < M). • 1 ≦ Ci ≦ 1016 (< 254) (0 ≦ i < M). • 1 ≦ Q ≦ 60. • 0 ≦ Sj < N (0 ≦ j < Q). • 0 ≦ Tj < N (0 ≦ j < Q). • Sj ≠ Tj (0 ≦ j < Q). • (Si,Ti) ≠ (Sj,Tj)(0 ≦ i < j < Q). • 漢字 Sj から始まり漢字 Tj で終わる漢字しりとりが存在する (0 ≦ j < Q). • 1 ≦ K ≦ 5. • 0 ≦ Uk <M(0 ≦ k<K). • Ui ≠ Uj (0 ≦ i < j < K). • Bruno が忘れてしまった単語の最初の文字は共通である.すなわち AU0 = AU1 = · · · = AUK−1 . 9
  10. 10. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 重要な制約 ・N ≦ 300 ・Q ≦ 60 ・Ci ≦ 1016 (< 254) ・K ≦ 5 ・A[U0] = A[U1] = ... A[UK-1] 10 ← そこそこ ← そこそこ ← かなりでかい ← かなり小さい     ←考察しよう
  11. 11. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 1’ (10点) ・ Q ≦ 10 ・ 答えのサイズ = W ≦ 10 ・ L ≦ 1000 → Anna で最短路して,答えを全部送る ( QWlog(N) = 10 × 10 × log(300) → 900 bit ) 11
  12. 12. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 1’ (10点) ・ Q ≦ 10 ・ 答えのサイズ = W ≦ 10 ・ L ≦ 1000 → Anna が Uk のコストをそのまま送る ( log(C)K = log(254) × 5 = 270 bit ) 12
  13. 13. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 重要な考察 最短経路はこの 6 通りしかない 13 TS V 赤い辺 を通らない Uk を通る こんなものはいらない
  14. 14. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 重要な考察 とりあえず番号付け 14 TS V パス 1~5 パス 0
  15. 15. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 2 (22点) ・この 6 (=K+1) 通りのどれを通るかを送る ・1クエリあたり 3 bit ・Q × 3 = 60 × 3 = 180 bit 15
  16. 16. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 数字を0/1列で送る 一般的なテク ・0 ≦ a < 5, 0 ≦ b < 5, 0 ≦ c < 10 を送りたい ・そのまま送ると  a に 3 bit , b に 3 bit , c に 4 bit→ 合計 10 bit ・(a,b,c) は 5 × 5 × 10 = 250 通り ・250 通りのうちどれか?を送ることにする  → 8 bit (2 bit 短縮) 16
  17. 17. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 3 (8点) ・ 3つずつまとめて送る ・x,y,z を送るとき,36x + 6y + z を送る ・6 × 6 × 6 = 216 通り → 8 bit ・(Q / 3) × 8 = (60 / 3) × 8 = 160 bit 17
  18. 18. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 Compare(j, a, b):  問題 j でパス a とパス b はどっちが短い? これが 0 ≦ j < Q, 0 ≦ a ≦ 5, 0 ≦ b ≦ 5 について全部分かれば解ける 18 小課題 4 (40点)
  19. 19. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説19 a+1 < b+4 なら 問題 1 は上ルートが勝ち a+1 < b+5 なら 問題 2 は上ルートが勝ち V 14 b a T2S2 S1 1 T1 4 1 5 の視点Bruno 小課題 4 (40点)
  20. 20. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説20 V 4 b a a-b < -1+4 なら 問題 1 は上ルートが勝ち a-b < -1+5 なら 問題 2 は上ルートが勝ち T2S2 S1 1 T1 1 5 の視点Bruno 小課題 4 (40点) 1 4
  21. 21. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 V 1 4 b a T2S2 S1 1 T1 4 1 5 の視点Bruno 21 どの問題についても a-b を定数と比べる形 a-b < -1+4 なら 問題 1 は上ルートが勝ち a-b < -1+5 なら 問題 2 は上ルートが勝ち 小課題 4 (40点)
  22. 22. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説22 V 1 4 a a-0 < -2+5 なら 問題 1 は中ルートが勝ち a-0 < -8+9 なら 問題 2 は中ルートが勝ち T2S2 S1 1 T1 4 5 9 の視点Bruno 小課題 4 (40点)
  23. 23. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説23 a-b < -3 なら 問題 1 は上ルートが勝ち a-b < -1 なら 問題 2 は上ルートが勝ち a-b < 4 なら 問題 3 は上ルートが勝ち a-b < -1 なら 問題 4 は上ルートが勝ち a-b < -5 なら 問題 5 は上ルートが勝ち a-b < 9 なら 問題 6 は上ルートが勝ち a-b = 2 だった. ↑上ルート ↓下ルート 小課題 4 (40点) a-b < cj の cj 順にソート
  24. 24. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 4 (40点) ・パス a と パス b の比較で パス a が勝つのはいくつか?  を送る. ・「パス a 勝ち」の個数が分かれば Bruno で復元できる ・送るのは log(Q+1) → 6 bit ・a, b の組み合わせが (K+1) × K / 2 = 15 通り ・6 × 15 = 90 bit 24
  25. 25. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 4 の解のイメージ 25 Anna Bruno 0 vs 1 0 vs 2 1 vs 2 Q1 Q1 Q1 0 vs 1 0 vs 2 1 vs 2 Q1 Q1 Q1 左が勝ち 右が勝ち 0 vs 1 0 vs 2 1 vs 2 Q1 Q1 Q1
  26. 26. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 4 の解のイメージ 26 Anna Bruno 0 vs 1 0 vs 2 1 vs 2 Q1 Q1 Q1 0 vs 1 0 vs 2 1 vs 2 Q1 Q1 Q1 5, 1, 7 0 vs 1 0 vs 2 1 vs 2 Q1 Q1 Q1 左が勝ち 右が勝ち
  27. 27. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 4 の解のイメージ 27 Anna Bruno 0 vs 1 0 vs 2 1 vs 2 Q1 Q1 Q1 0 vs 1 0 vs 2 1 vs 2 Q1 Q1 Q1 5, 1, 7 パス 0 < パス 1 パス 0 > パス 2 パス 1 > パス 2 だからパス 2 が最短やな! 0 vs 1 0 vs 2 1 vs 2 Q1 Q1 Q1 左が勝ち 右が勝ち
  28. 28. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 4 (40点) ・パス a と パス b の比較で パス a が勝つのはいくつか?  を送る. ・「パス a 勝ち」の個数が分かれば Bruno で復元できる ・送るのは log(Q+1) → 6 bit ・a, b の組み合わせが (K+1) × K / 2 = 15 通り ・6 × 15 = 90 bit 28
  29. 29. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 4 の解のイメージ 29 Anna Bruno 0 vs 1 0 vs 2 1 vs 2 Q1 Q1 Q1 0 vs 1 0 vs 2 1 vs 2 Q1 Q1 Q1 5, 1, 7 パス 0 < パス 1 パス 0 > パス 2 パス 1 > パス 2 だからパス 2 が最短やな! 0 vs 1 0 vs 2 1 vs 2 Q1 Q1 Q1 左が勝ち 右が勝ち Compare(j, a, b) を全部送るのはムダ
  30. 30. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 パス 1 と比較 パス 2 と比較 Q7 Q8 Q9 Q4 Q5 Q6 Q1 Q2 Q3 Q7 Q8 Q9 Q4 Q5 Q6 Q1 Q2 Q3 小課題 5 (20点) 30 Q5 Q6 Q7 Q8 Q4 Q1 Q2 Q3 Q7 Q8 Q9Q9 Q4 Q7 Q8 Q5 Q6 Q9 Q1 Q2 Q3 パス 0 パス 0 パス 1 パス 0 パス 1 パス 2 最短パスをパス i と比較
  31. 31. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 5 (20点) 使う Compare は ・Compare(?, 0, 1) : 9個 ・Compare(?, 0, 2) : 6個 ・Compare(?, 1, 2) : 3個 31
  32. 32. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 5 (20点) ・Compare(?, a, b) を使う個数を Xab とする ・左が勝つのは何個かを送る.(0 ~ Xab の範囲)  (まとめて送るテクでの圧縮もする) log(X01+1) + log(X02+1) + log(X12+1) + ... + log(X45+1) [bit] ・(60)→(30,30)→(20,20,20)→(15,15,15,15)→(12,12,12,12,12) となるように分割された時が最悪 → log(61) + log(31)×2 + log(21)×3 + log(16)×4 + log(12)×5 → 64 bit 32
  33. 33. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 5 の解のイメージ 33 Anna
  34. 34. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 5 の解のイメージ 34 Anna 4
  35. 35. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 5 の解のイメージ 35 Anna 4
  36. 36. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 5 の解のイメージ 36 Anna 4, 2, 1
  37. 37. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 5 の解のイメージ 37 Anna 4, 2, 1
  38. 38. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 5 の解のイメージ 38 Anna 4, 2, 1, 1, 2, 0
  39. 39. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 5 の解のイメージ 39 Anna 4, 2, 1, 1, 2, 0, ...
  40. 40. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 5 の解のイメージ 40 Bruno 4, 2, 1, 1, 2, 0, ...
  41. 41. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 5 の解のイメージ 41 Bruno 4, 2, 1, 1, 2, 0, ...
  42. 42. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 5 の解のイメージ 42 Bruno 2, 1, 1, 2, 0, ...
  43. 43. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 5 の解のイメージ 43 Bruno 2, 1, 1, 2, 0, ...
  44. 44. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 5 の解のイメージ 44 Bruno 1, 2, 0, ...
  45. 45. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 5 の解のイメージ 45 Bruno 1, 2, 0, ...
  46. 46. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 5 の解のイメージ 46 Bruno ...
  47. 47. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 小課題 5 (20点) ・Compare(?, a, b) を呼ぶ回数を Cab とする ・それぞれ小課題 4 と同じように送る  (まとめて送るテクでの圧縮もする) ・log(C01+1) + log(C02+1) + log(C12+1) + ... + log(C45+1) [bit] ・(60)→(30,30)→(20,20,20)→(15,...,15)→(12,...,12) となるように分割された時が最悪 → log(61) + log(31)×2 + log(21)×3 + log(16)×4 + log(12)×5 → 64 bit (おめでとうございます) 47
  48. 48. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 諸注意 ・long long (引数の型見てネ) ・パス i が無い ([???]の辺を消すと非連結になる) ・グラフが密なので Dijkstra なら priority queue を使わないO(V2)の方で (今回はどっちでもたぶん OK) ・不正はいけない 48
  49. 49. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 Warshall-Floyd 法 49 全頂点対間の最短距離を求めます 1 ∼ (k-1) i j 1 ∼ (k-1) だけを通って行く最短路がわかっている i → (1 ~ k-1) → j の最短経路
  50. 50. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 Warshall-Floyd 法 50 i j k (i → k) + (k → j) が (i → j) より短かったら i → (1 ~ k-1) → k の最短経路 k → (1 ~ k-1) → j の最短経路 i → (1 ~ k-1) → j の最短経路
  51. 51. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 Warshall-Floyd 法 51 i j k (i → k) + (k → j) が (i → j) より短かったら i → j を更新 i → (1 ~ k) → j の最短経路
  52. 52. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 Warshall-Floyd 法 for (k = 1 ... N){ for (i = 1 ... N){ for (j = 1 ... N){ i → j を更新する }}} 52
  53. 53. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 経路復元 53 i j k next ( i → j ) : i → j の経路で初めにたどる辺 更新 : next ( i → j ) ← next ( i → k ) る : i ← next ( i → j )の終点
  54. 54. 2014/03/242014 JOI春合宿 Day4 漢字しりとり(Kanji Shiritori) 解説 点数 54 0 25 50 75 100 1位

×