110 likes | 313 Views
Problem H ねこ鍋改造計画(仮). 秋葉 拓哉. 猫. ( 性別, Cute, 重さ ) Cute でソートしよう. デュアルねこ鍋. オス鍋. 選んで鍋を作る 重さの和はそれぞれ W 以下. メス鍋. デュアルねこ鍋の評価. Cute の最大 - 最小 6 - 4 = 2 鍋同士の重量の差 6 - 5 = 1 この 2 つの 大きい 方 max(1, 2) = 2. Cute: 4, 6 重さの和 : 5. Cute: 5 重さの和 : 6. これ を最小化したい!. つまり.
E N D
Problem Hねこ鍋改造計画(仮) 秋葉 拓哉
猫 • (性別, Cute, 重さ) • Cute でソートしよう
デュアルねこ鍋 オス鍋 • 選んで鍋を作る • 重さの和はそれぞれ W 以下 メス鍋
デュアルねこ鍋の評価 • Cute の最大 - 最小 • 6 - 4 = 2 • 鍋同士の重量の差 • 6 - 5 = 1 • この 2 つの大きい方 • max(1, 2) = 2 Cute: 4, 6 重さの和: 5 Cute: 5 重さの和: 6 これを最小化したい!
つまり ① Cute が差 d 以下の範囲で ② 重さの差が d 以下になるような鍋 が作れる最小の d を求めたい 重さ 5 ① ② 重さ 6
O(N3W) の解法 (TLE) • 全ての Cute の範囲を試す • O(N2) 通り • ナップサックの DP • O(NW) 範囲
O(N2W) の解法 (TLE) • 範囲を伸ばした時,ナップサック DP は直前の結果を再利用できる
O(NWlog W) の解法 (TLE?) • DP の値を,Yes/No から: 「その重量を作るために使う Cute の最小値」 • 区間を縮めることもできるようになる • ある値以下を × 扱い
O(NWlog W) の解法 (TLE?) • 答えについて二分探索できるようになる • 一度の判定に O(NW) 範囲の大きさ dが決まっていれば しゃくとり法のように 範囲を動かせばよい
O(NW) の解法 (想定解法) ① Cute の最大 - 最小 ② 鍋同士の重量の差 答え=max • 区間を広げる → ①が増え,②が減る • 区間を縮める → ②が増え,①が減る 小さい方をさらに小さくしても意味がない 二分探索は必要なく,しゃくとり法を一度で十分
結果 • First Submit: 98 min (USAGI Code) • First Accept: 256 min (USAGI Code) • Total Submit: 4 • Total Accept: 1