Contenu connexe
Plus de HCPC: 北海道大学競技プログラミングサークル (20)
RUPC 2019 Day3 D: 矢
- 23. 問題概要
• 以下のクエリが 𝑄 個与えられる
• 損失が 𝑙 回まで許されてるとき、到達できる矢の最小の長さは?
1 ≤ 𝑁 ≤ 105 (座標の長さ)
1 ≤ 𝑄 ≤ 105
(クエリの数)
- 27. 考察
𝑑𝑝𝑖 ≔ 矢の長さが 𝑖 の時の損失回数
(𝑎𝑖 ≔ 送風機がない、ちょうど長さが 𝑖 の区間の数)
𝑑𝑝2 = 1 ⋅ 𝑎2 + 2 ⋅ 𝑎3 + 3 ⋅ 𝑎4 + 4 ⋅ 𝑎5
- 28. 考察
𝑑𝑝𝑖 ≔ 矢の長さが 𝑖 の時の損失回数
(𝑎𝑖 ≔ 送風機がない、ちょうど長さが 𝑖 の区間の数)
𝑑𝑝𝑖 = 1 ⋅ 𝑎𝑖 + 2 ⋅ 𝑎𝑖+1 + 3 ⋅ 𝑎𝑖+2 + ⋯ + 𝑛 − 𝑖 + 1 ⋅ 𝑎 𝑛
- 29. 考察
𝑑𝑝𝑖 ≔ 矢の長さが 𝑖 の時の損失回数
(𝑎𝑖 ≔ 送風機がない、ちょうど長さが 𝑖 の区間の数)
𝑑𝑝𝑖 = 1 ⋅ 𝑎𝑖 + 2 ⋅ 𝑎𝑖+1 + 3 ⋅ 𝑎𝑖+2 + ⋯ + 𝑛 − 𝑖 + 1 ⋅ 𝑎 𝑛
𝑑𝑝𝑖+1 = 1 ⋅ 𝑎𝑖+1 + 2 ⋅ 𝑎𝑖+2 + ⋯ + 𝑛 − 𝑖 ⋅ 𝑎 𝑛
- 30. 考察
𝑑𝑝𝑖 ≔ 矢の長さが 𝑖 の時の損失回数
(𝑎𝑖 ≔ 送風機がない、ちょうど長さが 𝑖 の区間の数)
𝑑𝑝𝑖 = 1 ⋅ 𝑎𝑖 + 2 ⋅ 𝑎𝑖+1 + 3 ⋅ 𝑎𝑖+2 + ⋯ + 𝑛 − 𝑖 + 1 ⋅ 𝑎 𝑛
𝑑𝑝𝑖+1 = 1 ⋅ 𝑎𝑖+1 + 2 ⋅ 𝑎𝑖+2 + ⋯ + 𝑛 − 𝑖 ⋅ 𝑎 𝑛
𝑑𝑝𝑖 = 𝑑𝑝𝑖+1 + 𝑎𝑖 + 𝑎𝑖+1 + 𝑎𝑖+2 + ⋯ + 𝑎 𝑛
- 31. 考察
• DP の更新を愚直に行うと𝑂 𝑁2 かかる。
• 例えば累積和やセグ木などを使い、𝑎𝑖 の区間和を高速に求めること
でDP の更新が可能。
• データ構造を使わなくとも、少し工夫するとできる。
• 全体では DP + 二分探索で 𝑂 𝑁 + 𝑄 𝑙𝑜𝑔 𝑁 でこの問題が解けた。
- 33. 提出状況
• On-site : rupc_zekkidenamida (28min)
• On-line : okimochi (23 min)
• 31 / 93 (33.3 %)