188
Space Pirate 解説

New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

Space Pirate解説

Page 2: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

問題概要

•関数グラフfがある

•頂点Aの行き先をf(A)から頂点Bに置き換える

• スタート地点(頂点1)からK歩進む

• (A,B)を色々動かしたときに、K歩進んだ先はどのようになるでしょうか。数えてください。

Page 3: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題1 (10点)

• 𝑁 ≤ 100

Page 4: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題1 (10点)

• 𝑁 ≤ 100

•全ての(A, B)を試し、それぞれの行き先を調べる

Page 5: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題1 (10点)

• 𝑁 ≤ 100

•全ての(A, B)を試し、それぞれの行き先を調べる

• Kが大きいのでループを検出してうまいこと処理する

Page 6: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題1,2 (10+37点)

• 𝑁 ≤ 3000

Page 7: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題1,2 (10+37点)

• 𝑁 ≤ 3000

•何かしらのオーダーを減らせばよい

Page 8: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題1,2 (10+37点)

• 𝑁 ≤ 3000

•各(A,B)について𝑂 log 𝑛 で調べられればよい

Page 9: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題1,2 (10+37点) –考察

• 𝑁 ≤ 𝐾

Page 10: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題1,2 (10+37点) –考察

• 𝑁 ≤ 𝐾 → 𝐾歩進んだ先は閉路上にある

Page 11: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題1,2 (10+37点) –考察

• 𝑁 ≤ 𝐾 → 𝐾歩進んだ先は閉路上にある

Page 12: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題1,2 (10+37点) –考察

• 𝑁 ≤ 𝐾 → 𝐾歩進んだ先は閉路上にある

この範囲内

Page 13: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題1,2 (10+37点) –事前計算

•以下を事前計算

Page 14: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題1,2 (10+37点) –事前計算

•以下を事前計算• 元のグラフで、各点から2𝑖進んだ先はどの点か? (doubling)

• 各連結成分について根を一つ決めておく• 正確には木になっていないが、一箇所を切り開いて木と見なす

• 各点について、その点が所属する連結成分の根

• 各連結成分について、その連結成分に存在する閉路の大きさ

Page 15: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題1,2 (10+37点) –事前計算

• doublingにより、ある点から元のグラフ上でX歩進んだ先は高速に求められる

Page 16: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題1,2 (10+37点) –場合分け

•以下のように場合分け

Page 17: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題1,2 (10+37点) –場合分け

•以下のように場合分け• 頂点1から頂点Aに到達できない場合

→全て同じ点に到達する。到達先は簡単にわかる

• 頂点1から頂点Aに到達可能な場合→さらに場合分け

Page 18: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題1,2 (10+37点) –場合分け

•頂点1から頂点Aに到達可能な場合• 閉路上の到達可能な点を一つ選び、Cとおく

• 頂点1からCに初到達するまでの歩数を計算

• Cからの残り歩数を閉路長で割り、余りをとる

• この余りの数だけ進んだ点が、到達地点

Page 19: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題1,2 (10+37点) –場合分け

•以下のように場合分け• 頂点Bが頂点Aの子孫である場合

→もとの閉路とは無関係の閉路ができる (C=Bとおく)

• 頂点Bが頂点Aの子孫ではなく、頂点Aがもとの閉路上にある場合→もとの閉路の一部が変更されたような閉路ができる (C=Bとおく)

• 頂点Bが頂点Aの子孫ではなく、頂点Aがもとの閉路上にない場合→もとの閉路が使われる

Page 20: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題1,2 (10+37点) –場合分け

•以下のように場合分け• 頂点Bが頂点Aの子孫である場合

→もとの閉路とは無関係の閉路ができる (C=Bとおく)

• 頂点Bが頂点Aの子孫ではなく、頂点Aがもとの閉路上にある場合→もとの閉路の一部が変更されたような閉路ができる (C=Bとおく)

• 頂点Bが頂点Aの子孫ではなく、頂点Aがもとの閉路上にない場合→もとの閉路が使われる

• C=Bとおくことで、もとのグラフのdoublingを使って辿っても問題ない(一般には、もとのグラフ上を辿るのと変更後のグラフ上を辿るのでは異なる頂点に行き着く)

Page 21: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題1,2 (10+37点)

•以上のアルゴリズムで𝑂 𝑛2 log 𝑛 が実現された

Page 22: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題3 (33点)

•各頂点の行き先は互いに異なる

Page 23: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題3 (33点)

•各頂点の行き先は互いに異なる

• →グラフは閉路が何個か集まったものになる

Page 24: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題3 (33点)

•頂点1の連結成分の大きさをMとする。

• Aが頂点1とは異なる連結成分にあるとき→ 一括処理

• Aが頂点1と同じ連結成分にあるとき• Bが頂点1とは異なる連結成分にあるとき

• Bが頂点1と同じ連結成分にあるとき

Page 25: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題3 (33点)

• Aが頂点1と同じ連結成分にあり、Bが頂点1とは異なる連結成分にあるとき• この場合をまとめて処理すると、結果として頂点1とは異なる連結成分にある各頂点に 𝑁 −𝑀を足すのと同等であることがわかる。

Page 26: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題3 (33点)

• Aが頂点1と同じ連結成分にあり、Bが頂点1と同じ連結成分にあるとき• この結果できる閉路の大きさは1以上M以下。この大きさLごとに処理する

• Lを固定すると、到達先としてありえる頂点はM/Lより少し多いくらいしかない

• したがって処理の回数は𝑀

1+𝑀

2+⋯+

𝑀

𝑀 − 1+𝑀

𝑀程度となる。これは、𝑂 𝑀 log𝑀 である。各処理を𝑂 1 で行えばよい。

Page 27: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

小課題3 (33点)

•以上により、𝑂 𝑛 log 𝑛 で処理できた

Page 28: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法

• グラフを例示しつつ説明

Page 29: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法

• このグラフはN=8, K=10

4

6

7

5

1

3

8

2

Page 30: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法

•行き先が変更される頂点をA, その頂点の新しい行き先をBとする

4

6

7

5

1

3

8

2

Page 31: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法

•行き先が変更される頂点をA, その頂点の新しい行き先をBとする

• そもそも頂点1からAに到達できるかで場合分け

4

6

7

5

1

3

8

2

Page 32: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(1)

•頂点1からAに到達できない場合

4

6

7

5

1

3

8

2

Page 33: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(1)

•頂点1からAに到達できない場合

• このように行き先が変わっても、「頂点1から𝐾歩進んだ点」には影響しない

4

6

7

5

1

3

8

2

Page 34: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(1)

•頂点1からAに到達できない場合

• このように行き先が変わっても、「頂点1から𝐾歩進んだ点」には影響しない

• (頂点1から到達不能な点の個数)×𝑁を1から𝐾歩進んだ先の点に足す

4

6

7

5

1

3

8

2

4 × 8 = 32 を足す

Page 35: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法

•以下、Aが頂点1から到達可能の場合を調べる

4

6

7

5

1

3

8

2

Page 36: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法

•以下、Aが頂点1から到達可能の場合を調べる

• Bは頂点1と同じ連結成分に属するか?

4

6

7

5

1

3

8

2

Page 37: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

• Bが頂点1とは異なる連結成分に属する場合

4

6

7

5

1

3

8

2

Page 38: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

• Bが頂点1とは異なる連結成分に属する場合

4

6

7

5

1

3

8

2

Page 39: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

• Bが頂点1とは異なる連結成分に属する場合

4

6

7

5

1

3

8

2

Page 40: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

• Bが頂点1とは異なる連結成分に属する場合

• Bを固定して考える

4

6

7

5

1

3

8

2

Page 41: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

• Bが頂点1とは異なる連結成分に属する場合

• Bを固定して考える

• →ループの長さは一定

4

6

7

5

1

3

8

2

Page 42: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

• Bが頂点1とは異なる連結成分に属する場合

• Bを固定して考える

• →ループの長さは一定

• Aを頂点1から順番に動かすと、到達先は隣に移動していく

4

6

7

5

1

3

8

2

Page 43: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

• Bが頂点1とは異なる連結成分に属する場合

• Bを固定して考える

• →ループの長さは一定

• Aを頂点1から順番に動かすと、到達先は隣に移動していく

4

6

7

5

1

3

8

2

Page 44: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

• Bが頂点1とは異なる連結成分に属する場合

• Bを固定して考える

• →ループの長さは一定

• Aを頂点1から順番に動かすと、到達先は隣に移動していく

4

6

7

5

1

3

8

2

Page 45: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

• Bが頂点1とは異なる連結成分に属する場合

• Bを固定して考える

• →ループの長さは一定

• Aを頂点1から順番に動かすと、到達先は隣に移動していく

4

6

7

5

1

3

8

2

Page 46: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

• Bが頂点1とは異なる連結成分に属する場合

• Bを固定して考える

• →ループの長さは一定

• Aを頂点1から順番に動かすと、到達先は隣に移動していく

•連続した区間に1を足す→所謂imos法でできる(ループに注意)

4

6

7

5

1

3

8

2

2 を足す

2 を足す

Page 47: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

• Bが頂点1とは異なる連結成分に属する場合

• Bを固定して考える

• →ループの長さは一定

• Aを頂点1から順番に動かすと、到達先は隣に移動していく

•連続した区間に1を足す→所謂imos法でできる(ループに注意。この場合2周している)

4

6

7

5

1

3

8

2

2 を足す

2 を足す

Page 48: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

•別のグラフで再説明(N=16, K=20)6

7

5

1

13

214

15

10

4

11

9

12

3

8

16

Page 49: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

•頂点4をこの連結成分の「根」としておく

6

7

5

1

13

214

15

10

4

11

9

12

3

8

16

Page 50: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

• B=12の場合を考える6

7

5

1

13

214

15

10

4

11

9

12

3

8

16

Page 51: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

• B=12の場合を考える6

7

5

1

13

214

15

10

4

11

9

12

3

8

16

Page 52: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

• B=12の場合を考える6

7

5

1

13

214

15

10

4

11

9

12

3

8

16

Page 53: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

• B=12の場合を考える6

7

5

1

13

214

15

10

4

11

9

12

3

8

16

Page 54: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

• B=12の場合を考える6

7

5

1

13

214

15

10

4

11

9

12

3

8

16

Page 55: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

• B=12の場合を考える

•頂点10,15,14,9に1ずつ足せばよいことがわかった

6

7

5

1

13

214

15

10

4

11

9

12

3

8

16

Page 56: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

• B=12の場合を考える

•頂点10,15,14,9に1ずつ足せばよいことがわかった

• これをこのように記録する

6

7

5

1

13

214

15

10

4

11

9

12

3

8

16

1 を足す

全体:0 を足す

1 を引く

Page 57: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

• B=3,8,11の場合6

7

5

1

13

214

15

10

4

11

9

12

3

8

16

1 を足す

全体:0 を足す

1 を引く

Page 58: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

• B=9の場合6

7

5

1

13

214

15

10

4

11

9

12

3

8

16

1 を足す

全体:1 を足す

1 を引く

Page 59: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

• B=14,16の場合6

7

5

1

13

214

15

10

4

11

9

12

3

8

16

1 を足す

全体:1 を足す

1 を引く

Page 60: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

• B=15の場合6

7

5

1

13

214

15

10

4

11

9

12

3

8

16

1 を足す

全体:1 を足す

1 を引く

Page 61: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

• B=10の場合6

7

5

1

13

214

15

10

4

11

9

12

3

8

16

1 を足す

全体:0 を足す

1 を引く

Page 62: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

•連結成分内の各頂点がBの場合を全て処理する

6

7

5

1

13

214

15

10

4

11

9

12

3

8

16

Page 63: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(2)

•連結成分内の各頂点がBの場合を全て処理する

• →頂点13から頂点4に向かって部分和をとると本来のカウントが得られる

• (ループ全体に対するカウントを忘れずに)

6

7

5

1

13

214

15

10

4

11

9

12

3

8

16

Page 64: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法

•以下、Bが頂点1と同じ連結成分に属する場合を考える

Page 65: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3)

• ここで使うグラフ(N=27, K=35)

25

7

22 9

23 2017

26

1

21

24

11

10

19

627

18

2

8

3

14

4

15

16

13

12

5

Page 66: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3)

•根を決める

•根 = 頂点1から辿ってはじめてループに入る直前の頂点

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Page 67: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3)

• Y座標を定める

• Y座標 : これを木として見た時の深さ

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Page 68: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3)

• X座標を定める

• X座標 :頂点1とのLCAのY座標

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

X=0 X=1 X=2 X=3 X=4 X=5

Page 69: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3)

• Dを次の値とする:(BのY座標) – (AのY座標)

• Lを次の値とする:(初期状態のループ長)

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Page 70: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3)

• Dを次の値とする:(BのY座標) – (AのY座標)

• Lを次の値とする:(初期状態のループ長)

• この例ではL=4(DはA,Bの選び方に依存する値)

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Page 71: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3)

• AがBの祖先でない場合をまず考える

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Page 72: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3)

• AがBの祖先でない場合をまず考える

•特に、Aがサイクルに含まれない場合(この例ではA=1,17)をまず考える

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Page 73: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3A)

• AがBの祖先でない場合をまず考える

•特に、Aがサイクルに含まれない場合(この例ではA=1,17)をまず考える

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Page 74: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3A)

• AがBの祖先でない場合をまず考える

•特に、Aがサイクルに含まれない場合(この例ではA=1,17)をまず考える

• このときはサイクル長は一定

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Page 75: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3A)

• AがBの祖先でない場合をまず考える

•特に、Aがサイクルに含まれない場合(この例ではA=1,17)をまず考える

• このときはサイクル長は一定

•場合分け(2)と同様に処理可能

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Page 76: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3)

• AがBの祖先でない場合をまず考える

•次:Aがサイクルに含まれる場合(この例ではA=20,23,22,9)

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Page 77: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• AがBの祖先でない場合をまず考える

•次:Aがサイクルに含まれる場合(この例ではA=20,23,22,9)

• このとき、できるサイクル長はL+D+1である。

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

L = 4D = 2サイクル長 7

Page 78: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• AがBの祖先でない場合をまず考える

•次:Aがサイクルに含まれる場合(この例ではA=20,23,22,9)

• このとき、できるサイクル長はL+D+1である。

• D一定のとき、到達先のY座標は一定…? 25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

L = 4D = 2サイクル長 7

Page 79: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• D一定のとき、到達先のY座標は一定ではない

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Page 80: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• D一定のとき、到達先のY座標は一定ではない

• このときはY=6

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

L = 4D = 3サイクル長 8

Page 81: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• D一定のとき、到達先のY座標は一定ではない

• このときはY=2となる

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

L = 4D = 3サイクル長 8

Page 82: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• D一定のとき、到達先のY座標は一定ではない

• このときはY=2となる

• このように一点だけ例外が存在する

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

L = 4D = 3サイクル長 8

Page 83: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• D一定のとき、到達先のY座標は一定ではない

• このときはY=2となる

• このように一点だけ例外が存在する

• この例外はループ上に存在

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

L = 4D = 3サイクル長 8

Page 84: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• D一定のとき、到達先のY座標は一定ではない

• このときはY=2となる

• このように一点だけ例外が存在する

• この例外はループ上に存在

• この座標は通常のもののY座標からD+1を引いたものとなる

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

L = 4D = 3サイクル長 8

Page 85: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Dはマイナスにもなるので注意

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

L = 4D = -2サイクル長 3

Page 86: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•以上をイベントとして管理

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Page 87: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•以上をイベントとして管理

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3

Page 88: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•以上をイベントとして管理

•各Dについて、対応するY座標を計算

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 89: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•以上をイベントとして管理

•各Dについて、対応するY座標を計算

•例外的な到達先のY座標はこの値からD+1を減じたものになる

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 90: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•実際の数え上げ:下から走査する

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 91: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•実際の数え上げ:下から走査する

• このときループで回す頂点は頂点Aの候補ではなく、到達先の頂点の候補を意味する

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 92: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•各到達先候補について:

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 93: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•各到達先候補について:• Dの候補を列挙する

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 94: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•各到達先候補について:• Dの候補を列挙する

• この場合は-1, -3

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 95: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•各(到達先候補,D)について:• Bの候補を列挙する

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 96: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•各(到達先候補,D)について:• Bの候補を列挙する

• D=-1のとき、候補はこの範囲の子孫• この三角形はDのみに依存

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

X=0 X=1 X=2 X=3 X=4 X=5

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 97: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•各(到達先候補,D)について:• Bの候補を列挙する

• D=3のとき、候補はこの範囲の子孫• この三角形はDのみに依存

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

X=0 X=1 X=2 X=3 X=4 X=5

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 98: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•各(到達先候補,D)について:• Bの候補を列挙する

• Bに対してAは一意に定まる• Bの候補の個数を数えるだけでよい

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

X=0 X=1 X=2 X=3 X=4 X=5

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 99: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 100: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=6D=4

Y: 4~6の範囲の自分の子孫の数が知りたい

Y=5D=2

Page 101: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい• この場合は4個

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=6D=4

Y: 4~6の範囲の自分の子孫の数が知りたい

Y=5D=2

Page 102: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1]

[1] [1]

[1][1]

[1][1][1]

[1]

[1]

[1]

[1]

[1]

[1] [1][1]

[1]

[1]

[1]

[1]

[1]

[1]

[1]

[1]

[1]

[1]

[1]

Page 103: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1]

[1] [1]

[1][1]

[1][1][1]

[1]

[1]

[1]

[1]

[1]

[1] [1][1]

[1]

[1]

[1]

[1]

[1]

[1]

[1]

[1]

[1]

[1]

[1]

Page 104: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査• 処理中の頂点のFenwick Treeは子孫の個数を正しく表している

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1]

[1] [1]

[1][1]

[1][1][1]

[1]

[1]

[1]

[1]

[1]

[1] [1][1]

[1]

[1]

[1]

[1]

[1]

[1]

[1]

[1]

[1]

[1]

[1]

Page 105: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査• 終わったら上の木とマージ

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1]

[1] [1]

[1][1]

[1][1][1]

[1]

[1]

[1]

[1]

[1]

[1] [1][1]

[1]

[1,1]

[1]

[1]

[1]

[1]

[1]

[1]

[1]

[1]

Page 106: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1]

[1] [1]

[1][1]

[1][1][1]

[1]

[1]

[1]

[1]

[1]

[1] [1][1]

[1]

[1,1]

[1]

[1]

[1]

[1]

[1]

[1]

[1]

[1]

Page 107: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1]

[1] [1]

[1][1]

[1][1][1]

[1]

[1]

[1]

[1]

[1]

[1] [1][1]

[1]

[1,1]

[1]

[1]

[1]

[1,1]

[1]

[1]

[1]

Page 108: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1] [1,1]

[1][1]

[1][1][1]

[1]

[1]

[1]

[1]

[1]

[1] [1][1]

[1]

[1,1]

[1]

[1]

[1]

[1,1]

[1]

[1]

[1]

Page 109: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1] [1,1]

[1][1]

[1][1][1]

[1]

[1]

[1]

[1]

[1]

[1] [1][1]

[1]

[1,1,1]

[1]

[1]

[1,1]

[1]

[1]

[1]

Page 110: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1] [1,1]

[1][1]

[1][1][1]

[1]

[1]

[1]

[1]

[1]

[1] [1][1]

[1]

[1,1,1]

[1]

[1]

[1,1]

[1][1,1]

Page 111: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1] [1,1]

[1][1]

[1][1][1]

[1]

[1]

[1]

[1]

[1]

[1] [1][1]

[1]

[1,1,1]

[1]

[1]

[1,1,1][1,1]

Page 112: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1,1]

[1][1]

[1][1][1]

[1]

[1]

[1]

[1]

[1]

[1,1] [1][1]

[1]

[1,1,1]

[1]

[1]

[1,1,1][1,1]

Page 113: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1][1]

[1][1][1]

[1]

[1]

[1]

[1]

[1]

[1,2,1] [1][1]

[1]

[1,1,1]

[1]

[1]

[1,1,1][1,1]

Page 114: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1][1]

[1][1][1]

[1]

[1]

[1]

[1]

[1]

[1,2,1] [1][1]

[1]

[1,1,1,1]

[1]

[1,1,1][1,1]

Page 115: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1][1]

[1][1][1]

[1]

[1]

[1]

[1]

[1]

[1,2,1] [1,1,1][1]

[1]

[1,1,1,1]

[1]

[1,1,1]

Page 116: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1][1]

[1][1][1]

[1]

[1]

[1]

[1]

[1]

[1,2,1] [1,2,2,1][1]

[1]

[1,1,1,1]

[1]

Page 117: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査• Fenwick Treeの数字は、左ほど深い(Yが大きい)頂点の個数を表すように保持する

• これはマージの効率化のために必要 25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1][1]

[1][1][1]

[1]

[1]

[1]

[1]

[1,2,1,1]

[1,2,2,1][1]

[1]

[1,1,1,1]

[1]

Page 118: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1][1]

[1][1][1]

[1]

[1]

[1]

[1]

[1,2,1,1]

[1,2,2,1][1]

[1][1,1,1,1,1]

Page 119: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1][1]

[1][1][1]

[1]

[1]

[1]

[1]

[1,2,1,1]

[1,2,2,1]

[1,1][1,1,1,1,1]

Page 120: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1][1]

[1][1][1]

[1]

[1]

[1]

[1]

[1,2,1,1][1,2,2,2,1]

[1,1,1,1,1]

Page 121: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1][1]

[1][1][1]

[1]

[1]

[1]

[1,2,1,1,1]

[1,2,2,2,1][1,1,1,1,1]

Page 122: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1]

[1][1][1,1]

[1]

[1]

[1]

[1,2,1,1,1]

[1,2,2,2,1][1,1,1,1,1]

Page 123: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1][1,1][1,1]

[1]

[1]

[1]

[1,2,1,1,1]

[1,2,2,2,1][1,1,1,1,1]

Page 124: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1,1,1,1,1,1][1,1][1,1]

[1]

[1]

[1]

[1,2,1,1,1]

[1,2,2,2,1]

Page 125: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査• この頂点の処理には注意

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1,1,1,1,1,1][1,1][1,1]

[1]

[1]

[1]

[1,2,1,1,1]

[1,2,2,2,1]

Page 126: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査• この頂点の処理には注意

(3B)の場合、この個数は親に遺伝させないようにするとよい

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1,1,1,1,1,1][1,1][1,1]

[1]

[1]

[1]

[1,2,1,1,1]

[1,2,2,2,1]

Page 127: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1,1,1,1,1,1][1,1][1,1]

[1]

[1]

[1]

[1,2,1,1,1]

[1,2,2,2,1]

Page 128: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1,1,1,1,1,1][1,1][1,1]

[1]

[1]

[1,2,1,1,1,1]

[1,2,2,2,1]

Page 129: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1,1,1,1,1,1][1,1]

[1,1,1]

[1]

[1,2,1,1,1,1]

[1,2,2,2,1]

Page 130: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1,1,1,1,1,1]

[2,2,1]

[1]

[1,2,1,1,1,1]

[1,2,2,2,1]

Page 131: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1,1,1,1,3,3,1]

[1]

[1,2,1,1,1,1]

[1,2,2,2,1]

Page 132: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1,1,1,1,3,3,1]

[1,2,1,1,1,1,1]

[1,2,2,2,1]

Page 133: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Bの候補を高速に数えたい

•各頂点でFenwick Treeを保持• はじめは[1]を表す木として初期化

• イベントを処理しながら下から走査

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

[1,2,3,2,4,4,2,1]

[1,2,2,2,1]

Page 134: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Fenwick Treeのマージ

Page 135: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Fenwick Treeのマージ

•親が [1,2,3] 、子が [2,5,6] というデータを保持していたとする

Page 136: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Fenwick Treeのマージ

•親が [1,2,3] 、子が [2,5,6] というデータを保持していたとする

•子の末尾に0を付加する [2,5,6,0]

Page 137: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Fenwick Treeのマージ

•親が [1,2,3] 、子が [2,5,6] というデータを保持していたとする

•子の末尾に0を付加する [2,5,6,0]

•親の[1,2,3]と[2,5,6,0]を右揃えで加算し、新しい列を作る

Page 138: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Fenwick Treeのマージ

•親が [1,2,3] 、子が [2,5,6] というデータを保持していたとする

•子の末尾に0を付加する [2,5,6,0]

•親の[1,2,3]と[2,5,6,0]を右揃えで加算し、新しい列を作る

• → [2,6,8,3]

Page 139: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Fenwick Treeのマージ

•親が [1,2,3] 、子が [2,5,6] というデータを保持していたとする

•子の末尾に0を付加する [2,5,6,0]

•親の[1,2,3]と[2,5,6,0]を右揃えで加算し、新しい列を作る

• → [2,6,8,3]

• このとき、小さい方のデータを大きい方のデータに加えるようにする

Page 140: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• Fenwick Treeのマージ

•親が [1,2,3] 、子が [2,5,6] というデータを保持していたとする

•子の末尾に0を付加する [2,5,6,0]

•親の[1,2,3]と[2,5,6,0]を右揃えで加算し、新しい列を作る

• → [2,6,8,3]

• このとき、小さい方のデータを大きい方のデータに加えるようにする

• → データ構造をマージする一般的なテク。全体で 𝑂(𝑛 log 𝑛)• 対数は2乗にはならない

Page 141: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• イベント処理の計算量

Page 142: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• イベント処理の計算量

• イベント : 到達先候補ごとに処理していた

Page 143: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• イベント処理の計算量

• イベント : 到達先候補ごとに処理していた

•到達先候補ごとのイベント数が均等ならば、イベント処理回数は𝑂(𝑛)

Page 144: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• イベント処理の計算量

• イベント : 到達先候補ごとに処理していた

•到達先候補ごとのイベント数が均等ならば、イベント処理回数は𝑂(𝑛)

• 1つのイベントは𝑂 log 𝑛 で処理できるから、𝑂 𝑛 log 𝑛

Page 145: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• イベント処理の計算量

• イベント : 到達先候補ごとに処理していた

•到達先候補ごとのイベント数が均等ならば、イベント処理回数は𝑂(𝑛)

• 1つのイベントは𝑂 log 𝑛 で処理できるから、𝑂 𝑛 log 𝑛

Page 146: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• こういうケースがありそう:• Y=2にたくさんの頂点がある かつ

• Y=2にたくさんのイベントがある

• この場合、イベント処理回数は𝑂 𝑛2 になりかねない

Page 147: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

• イベントの図を思い出そう

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 148: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•簡単のため、数え上げ処理を2つに分割

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 149: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•簡単のため、数え上げ処理を2つに分割• 加算処理

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 150: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•簡単のため、数え上げ処理を2つに分割• 加算処理

• 減算処理

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 151: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•各イベントの数え上げ範囲はDが変化すると上下に動く

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

D=-1の場合

Page 152: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•各イベントの数え上げ範囲はDが変化すると上下に動く

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

D=0の場合

Page 153: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•各イベントの境界部(赤線で示した)に注目する

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

D=0の場合

Page 154: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•各イベントの境界部(赤線で示した)に注目する• 加算処理の場合もこんな感じで同様

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

D=0の場合

Page 155: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•各イベントの境界部(赤線で示した)に注目する

•意味があるものだけ処理したい

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 156: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•各イベントの境界部(赤線で示した)に注目する

•意味があるものだけ処理したい

•例えば、2を処理中のとき

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 157: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•各イベントの境界部(赤線で示した)に注目する

•意味があるものだけ処理したい

•例えば、2を処理中のとき• こういった境界をもつイベントはたくさんあっても一括処理できる

• (全て、数え上げの結果が一緒)

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 158: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•各イベントの境界部(赤線で示した)に注目する

•意味があるものだけ処理したい

•例えば、2を処理中のとき• 逆に、こういった境界をもつイベントはたくさんあってもいずれも無視してよい

• (全て、数え上げの結果は0)25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 159: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•各イベントの境界部(赤線で示した)に注目する

•意味があるものだけ処理したい

•例えば、2を処理中のとき• 境界がこの範囲にあるイベントだけを処理すればよい

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 160: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•各イベントの境界部(赤線で示した)に注目する

•意味があるものだけ処理したい

•例えば、2を処理中のとき• 境界がこの範囲にあるイベントだけを処理すればよい

• 実際には、さらにYの値が一致するイベントのみを対象にする

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 161: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•意味のあるイベントに、頂点を対応づける

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 162: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•意味のあるイベントに、頂点を対応づける

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 163: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•意味のあるイベントに、頂点を対応づける

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 164: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•意味のあるイベントに、頂点を対応づける

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 165: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•意味のあるイベントに、頂点を対応づける

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 166: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•意味のあるイベントに、頂点を対応づける• 境界のすぐ下の頂点であって

• 処理中の頂点の子孫であるようなもの

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 167: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•意味のあるイベントに、頂点を対応づける• 境界のすぐ下の頂点であって

• 処理中の頂点の子孫であるようなもの

•意味のあるイベントには、1つ以上の頂点が対応する

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 168: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•同じ頂点に対応するイベント呼び出しが2回行われることはない

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

Page 169: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•同じ頂点に対応するイベント呼び出しが2回行われることはない

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=-3,-2,0,1,5

Y=2D=-1,3

Y=5D=2

Y=6D=4

D=3, B=23

D=2, B=15D=2, B=6

D=1, B=9D=1, B=9 D=1, B=9

D=0, B=9 D=0, B=9

D=-1, B=2 D=-1, B=5 D=-1, B=10

D=-1, B=23

D=-2, B=9 D=-2, B=9 D=-2, B=9D=-2, B=9

D=-3, B=9 D=-3, B=9

各頂点に対応づけられたイベント。(減算処理に関しての表)

Page 170: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•同じ頂点に対応するイベント呼び出しが2回行われることはない

• →意味のあるイベント呼び出しの回数は𝑂 𝑛 に抑えられた

Page 171: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•例外的な場合の処理

Page 172: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•例外的な場合の処理

•各イベント(Y,D)について、Y座標がY-(D+1)となるようなループ上の点が到達先の候補である。

Page 173: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3B)

•例外的な場合の処理

•各イベント(Y,D)について、Y座標がY-(D+1)となるようなループ上の点が到達先の候補である。

• Y-(D+1)がマイナスになる可能性があることだけ注意すればOK

Page 174: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3C)

• AがBの祖先である場合を考える

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Page 175: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3C)

• AがBの祖先である場合を考える

• このとき、できるサイクル長はD + 1 である。

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Page 176: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3C)

• AがBの祖先である場合を考える

• このとき、できるサイクル長はD + 1 である。

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

D = 4サイクル長 5

Page 177: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3C)

• AがBの祖先である場合を考える

• このとき、できるサイクル長はD + 1 である。

• D一定のとき、到達先のY座標は一定

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

D = 4サイクル長 5

Page 178: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3C)

• AがBの祖先である場合を考える

• このとき、できるサイクル長はD + 1 である。

• D一定のとき、到達先のY座標は一定

• というわけではないが、D+1を法として一定である。

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

D = 4サイクル長 5

Page 179: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3C)

• AがBの祖先である場合を考える

• このとき、できるサイクル長はD + 1 である。

• D一定のとき、到達先のY座標は一定

• というわけではないが、D+1を法として一定である。

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

D = 4サイクル長 5のときの到達先の候補

Page 180: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3C)

•以上をイベントとして管理

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=0,1,2,4,5

Y=2D=0,1,3,7

Y=5D=0,4,6

Y=6D=0,1,2,3,5

Y=1D=0

Y=3D=0,2

Y=4D=0,1

Y=7D=0

Page 181: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3C)

•以上をイベントとして管理

• イベントの個数は逆数の和だから、𝑂 𝑛 log 𝑛

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=0,1,2,4,5

Y=2D=0,1,3,7

Y=5D=0,4,6

Y=6D=0,1,2,3,5

Y=1D=0

Y=3D=0,2

Y=4D=0,1

Y=7D=0

Page 182: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3C)

• D=3のイベントに引っかかるBの範囲は図のようになる

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=0,1,2,4,5

Y=2D=0,1,3,7

Y=5D=0,4,6

Y=6D=0,1,2,3,5

Y=1D=0

Y=3D=0,2

Y=4D=0,1

Y=7D=0

Page 183: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3C)

• D=3のイベントに引っかかるBの範囲は図のようになる• そのうち、Y=2, Y=6のものの範囲はそれぞれ図のようになる

25

7

22

9

23

20

1726

121

24

11

10

19

627

18

2

8

3

14

4

15

16

1312

5

Y=0

Y=1

Y=2

Y=4

Y=5

Y=6

Y=3

Y=7

Y=0D=0,1,2,4,5

Y=2D=0,1,3,7

Y=5D=0,4,6

Y=6D=0,1,2,3,5

Y=1D=0

Y=3D=0,2

Y=4D=0,1

Y=7D=0

Page 184: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3C)

• あとは(3B)の場合と同様に、木を下から走査する

Page 185: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3C)

• あとは(3B)の場合と同様に、木を下から走査する• 木を走査しながら、頂点ごとに子孫の個数を記録したFenwick木を構築

• 各頂点について、意味のあるイベントを列挙し、それらのイベントについて数え上げを行う

• 各頂点について、意味のないイベントは一括して数え上げを行う

Page 186: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3C)

• これによって、同様の計算量解析が使える

•到達先が尾根(Y=X)にないときの処理の計算量は合わせて𝑂 𝑛 log 𝑛 になることが示せる

Page 187: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法 –場合分け(3C)

• これによって、同様の計算量解析が使える

•到達先が尾根(Y=X)にないときの処理の計算量は合わせて𝑂 𝑛 log 𝑛 になることが示せる

•到達先が尾根にあるときの処理→一回あたり𝑂(log 𝑛)の処理を合計𝑂 𝑛 log 𝑛 回行うので、𝑂 𝑛 log2 𝑛 までは抑えられる

Page 188: New Space Pirate 解説 - Amazon S3s3-ap-northeast-1.amazonaws.com/data.cms.ioi-jp.org/open... · 2016. 2. 6. · 小課題1,2 (10+37点) –事前計算 •以下を事前計算

満点解法

•以上により時間計算量𝑂 𝑛 log2 𝑛 を達成できた