Document

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