Login with GitHub. Nope?
修正 C++ 的程式碼在使用一定量動態記憶體後會產生 RF 的問題 @ 2019/12/6 4:45pm NeoHOJ 強勢復活中 (Open beta)
Submit  Ranklist

Problem : 254 - Farmer

Problem Statistics

Solved Member: 17  Submission: 80  User Tried: 17

Statement:

某一農夫有一些塊狀的農地,每一塊地的周圍種滿了白扁柏樹。該農夫另外也擁有一些長條狀的農地,這些長條狀的農地上則只種了一排白扁柏樹。不管是在塊狀農地或是長條狀農地上,每兩棵相鄰的白扁柏樹之間都種了一棵橄欖樹。這位農夫所擁有的白扁柏樹全都種在他的塊狀農地周圍或是在長條狀農地上,而他所擁有的橄欖樹則也全都種在白扁柏樹之間。

有一天,農夫生了重病,且意識到他可能會撐不過這次的重病。在他過世前幾天,他把大兒子叫到身邊並告訴他:「你可以任選Q 棵白扁柏樹,而你所選的連續兩棵白扁柏樹之間的橄欖樹也都歸你」。 大兒子可從任何的塊狀農地及長條狀農地中任選白扁柏樹。因為大兒子非常喜歡橄欖樹,因此他希望他所挑中的白扁柏樹能夠讓他繼承越多橄欖樹越好。



在圖例一中,假設大兒子必須選擇 Q=17 棵白扁柏樹,如要繼承最多橄欖樹的話,他就應應該選擇第一塊農地及第二塊農地上的所有白扁柏樹,從而繼承17棵橄欖樹。

請寫一個程式,當給定所有塊狀農地、長條狀農地資訊及所需選擇的白扁柏樹個數時,找出大兒子所能繼承的最大橄欖樹數量。

Input:Output:

第一行包含有整數 Q,代表大兒子所需選擇的白扁柏樹數量;整數 M,代表塊狀農地數;及整數 K,代表長條狀農地數。

第二行包含 M 個整數,N1, N2,… NM,其中 NI 代表第 I 個塊狀農地上的白扁柏樹數量。

第三行包含 K 個整數,R1, R2,… RK,其中 RJ 代表第 J 個長條狀農地上的白扁柏樹數量。

在所有的輸入中, 0 ≤ Q ≤ 150000, 0 ≤ M ≤ 2000, 0 ≤ K ≤ 2000, 3 ≤ N1 ≤ 150, 3 ≤ N2 ≤ 150, … 3 ≤ NM ≤ 150, 2 ≤ R1 ≤ 150, 2 ≤ R2 ≤ 150, … 2 ≤ RK ≤ 150。在所有塊狀及長條狀農地上的總白扁柏樹數量至少會是 Q。除此之外,在50%的輸入檔中,Q ≤ 1500。
輸出應只有一整數,代表大兒子所能繼承的最大橄欖樹數量。

Sample Input:Sample Output:

17 3 3
13 4 8
4 8 6
17

Source:

IOI 2004

Problem Setter

Testdata:

TestTimeMemoryScore
01000ms16384kb
11000ms16384kb5
21000ms16384kb5
31000ms16384kb5
41000ms16384kb5
51000ms16384kb5
61000ms16384kb5
71000ms16384kb5
81000ms16384kb5
91000ms16384kb5
101000ms16384kb5
111000ms16384kb5
121000ms16384kb5
131000ms16384kb5
141000ms16384kb5
151000ms16384kb5
161000ms16384kb5
171000ms16384kb5
181000ms16384kb5
191000ms16384kb5
201000ms16384kb5