#P1853. Cat

Cat

题目描述

在强风中,帆船通常会向背风侧(远离风向的一侧)倾斜,如图中所示。这种倾斜至少有两个不利影响:
11. 有效帆面积减少,因为帆的有效高度会乘以倾斜角的余弦值,进而导致船速下降。
22. 当船体重心不再位于船体上方时,可能导致船只倾覆。

为缓解这些问题,双体船(如图)将船体分为左右两部分(左舷和右舷船体),从而增加船的有效宽度。这种设计能降低帆的垂直机械优势,减少倾斜幅度,同时提高船只抗倾覆能力。

船员可通过坐在或站在迎风侧船体(甚至向外倾斜)来进一步减少倾斜。但若风力过强,船长只能选择松帆(减少帆的有效宽度,类似倾斜减少高度的效果)或采取其他措施避免倾覆。

收帆ReefingReefing)是一种减少帆面积的机制,但会降低船速。因此,本题中的船长选择另一种方法:靠岸采集岩石作为压载物(BallastBallast)。压载物能增加船体重量,抵消倾斜效应,虽然会略微降低船速,但影响远小于收帆。

给定nn块岩石,你需要将它们分配到左舷和右舷船体,使两边的总重量差异不超过2%2\%

输入格式

输入包含多个测试用例,以00结束。每个测试用例格式如下:
- 第一行:岩石数量nn1<n1001 < n \leq 100)。
- 接下来nn行:每行给出第ii块岩石的重量(单位:千克,正实数且不超过100100)。

输出格式

对每个测试用例,输出一行整数,表示分配到右舷船体的岩石编号(其余岩石默认分配到左舷)。要求两舷总重量差异不超过2%2\%。若有多解,输出任意一解即可。

样例输入 1

5
10.0
50.0
90.0
38.0
7.1
0

样例输出 1

3 5

来源

Waterloo local 2004.09.19

关键思路

本题可转化为背包问题
11. 目标:将岩石分为两组,使两组总重量尽可能接近(差异2%\leq 2\%)。
22. 解法:动态规划或贪心算法,优先选择能平衡两舷重量的组合。
33. 输出时只需满足$|W_{\text{右舷}} - W_{\text{左舷}}| \leq 0.02 \times (W_{\text{右舷}} + W_{\text{左舷}})$。