r374. 13242 - Pool Filling
標籤 : UVA
通過比率: 4人/ 6人 ( 67%) [非即時]
評分方式:
Tolerant

最近更新 : 2025-10-01 12:26

內容

有一個空的泳池需要注滿特定溫度的水。為了做到這一點,你有一排放在泳池邊緣附近的水罐,這些水罐從編號 0 開始排列。每個水罐中裝有不同體積、不同溫度的水。你可以將任意多個水罐倒入泳池,但只能倒入連續的水罐

目標是讓泳池中至少注入一半容量的水(不能超過泳池總容量),並且使混合後的水溫儘可能接近目標溫度,而且與目標溫度的差異不得超過 ±5°C。我們假設,當混合兩種不同體積的水時,混合後的水溫為原始水溫按體積加權的平均值。

例如,你可能有以下 5 個水罐:

水罐編號體積(公升)溫度(°C)
04523
12040
26722
310911
4956

例如,你可以將水罐 1、2 和 3 的水倒入泳池,但不能只倒入水罐 1 和 3,因為它們不是連續的。

假設泳池夠大,倒入水罐 1、2 和 3 的總體積為 20 + 67 + 109 = 196 公升。混合後的水溫為:

(20 × 40 + 67 × 22 + 109 × 11) / (20 + 67 + 109) = 17.719388  °C

輸入說明

第一行是一個整數,表示要解決的問題數量。接下來,對於每一個問題:

  • 一行包含兩個整數:泳池的最大容量,以及目標水溫。

  • 一行包含一個整數:水罐的數量(不會超過 3000 個)。

  • 接下來有多行,每行對應一個水罐,包含兩個整數:該水罐中水的體積和水溫。

輸出說明

對於每一個問題,你需要輸出一行,包含兩個整數,分別表示要倒入泳池的起始水罐編號結束水罐編號,以使混合後的水溫與目標溫度的差值最小。

如果沒有任何方法可以在不超過泳池容量的情況下,倒入至少一半容量的水,且使水溫在允許的溫度範圍內(與目標溫度的差異不超過 ±5°C),那麼這一行應該輸出 Not possible

如果有多個最佳解(也就是混合後的水溫與目標溫度的差值相同),則應該選擇起始水罐編號最小的那組水罐。

範例輸入 #1
2
615 11
15
24 18
25 5
74 4
80 5
75 3
96 2
53 6
25 24
74 20
97 20
76 3
14 16
8 3
21 14
82 18
100 20
3
10 20
66 40
5 100
範例輸出 #1
5 12
Not possible
測資資訊:
記憶體限制: 64 MB
公開 測資點#0 (100%): 2.0s , <10M
提示 :
標籤:
UVA
出處:
[管理者: yatsen (愛情少校) ]

本題狀況 本題討論 排行

編號 身分 題目 主題 人氣 發表日期
沒有發現任何「解題報告」