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

Problem : 271 - Salesman

Problem Statistics

Solved Member: 7  Submission: 42  User Tried: 8

Statement:

有位旅行業務員發現,若要使用最佳化的方式規劃他在陸地上的旅行,那將會是一個十分難以處理的計算問題。因此他決定將他的生意轉向多瑙河 ( Danube River ) 沿岸的線性世界。他擁有一艘速度飛快的快艇,可以讓他沿著河從任何一個地點瞬間移動到另一個地點。遺憾的是,這艘快艇的油耗十分驚人。他在逆流時 ( 朝河流源頭的方向 ) ,每公尺移動將花費業務員 U 元,在順流時 ( 朝離開河流源頭的方向 ) ,每公尺移動將花費業務員 D 元。

河岸上共有N個貿易展是這個業務員所想參加的。每個貿易展為期一天。對於貿易展 X,業務員知道他的舉辦日期 TX,以及距離他購買快艇的日子為計算單位。他同時知道貿易展的舉辦地點是在河流源頭順流而下LX公尺處,以及如果參加這個貿易展,他所能得到的收入為MX元。他必須從他岸邊的住處開始和結束他的旅程,他的住處位於從河流源頭順流而下 S 公尺處。

請幫助這位旅行業務員規劃他應該選擇參加那些貿易展 ( 如果有要參加任何貿易展 ) 以及參加順序,使得他在旅程結束時能有最大的獲利。這位旅行業務員的獲利,指的是他因為參展所得到的收入總和,減去他在河流逆流與順流移動時的所有花費。

請記住如果貿易展 A 舉辦的時間在貿易展 B 之前,那麼業務員只能按照相同的順序參展 ( 亦即他不能先參加 B 再參加 A )。然而,如果兩個貿易展在同一天舉辦,這位業務員可以以任何順序參加這兩個貿易展。業務員一天內可以參加的貿易展數目並沒有限制,但他當然不能藉由參加相同的貿易展兩次而獲取兩次的收入。他可以路過他參加過的貿易展地點,但不會因此得到任何收入。

Task:

給定所有貿易展的日期、地點和可得到的收入,以及業務員河邊住家的位置和旅行的花費,請寫一個程式來計算他在旅程結束時,所可能得到的最大獲利。

Input:Output:

第一行依序含有整數N、U、D和S,中間用一個空白隔開。

接下來的N行描述這N個未按特定順序排序的貿易展。這N行中的第k行敘述第k個貿易展,含有三個以單一空白相間格的整數:貿易展的日期Tk、地點Lk以及業務員的收入Mk

注意:輸入資料中所有的地點都不同。也就是說,沒有兩個貿易展會在相同地點舉行,同時也沒有貿易展的地點和業務員家的地點相同。

限制:
1 ≤ N ≤ 500000,貿易展數目。
1 ≤ D ≤ U ≤ 10,每一公尺逆流(U)和順流(D)的花費。
1 ≤ S ≤ 500001,業務員的住家位置。
1 ≤ Tk ≤ 500000,貿易展k的舉行日期。
1 ≤ Lk ≤ 500001,貿易展k的位置。
1 ≤ Mk ≤ 4000,業務員若參加貿易展k所能得到的收入。
輸出含有一個整數的一行,這個整數為業務員在旅程結束時所能得到的獲利最大值。

Sample Input:Sample Output:

4 5 3 100
2 80 100
20 125 130
10 75 150
5 120 110
50

HINT:

最佳的排成方法為參加貿易展 1 和 3 ( 位於地點 80 和 75 ) 。所有事件的收入和花費如下:
 •業務員逆流旅行20公尺,花費100元。截至目前為止獲利:-100
 •他參加貿易展1,收入100。截至目前為止獲利:0
 •他逆流旅行5公尺,花費25元。截至目前為止獲利:-25
 •他參加貿易展3,收入150元。截至目前為止獲利:125
 •他順流旅行25公尺回到家,花費75元。最後結算獲利:50

評分資訊:
佔總分60分的測試資料中,沒有兩個貿易展會在同一天舉辦。
佔總分40分的測試資料中,所有輸入資料中的數字都不會超過5000。
同時滿足上面兩個條件的測試資料,佔總分的15分。
滿足上面兩個條件中至少一個條件的測試資料,佔總分的85分。

Source:

IOI 2009

Problem Setter

Testdata:

TestTimeMemoryScore
01000ms131072kb
13000ms131072kb2
23000ms131072kb3
33000ms131072kb4
43000ms131072kb3
53000ms131072kb3
63000ms131072kb2
73000ms131072kb4
83000ms131072kb4
93000ms131072kb5
103000ms131072kb5
113000ms131072kb5
123000ms131072kb5
133000ms131072kb5
143000ms131072kb3
153000ms131072kb3
163000ms131072kb4
173000ms131072kb2
183000ms131072kb3
193000ms131072kb5
203000ms131072kb2
213000ms131072kb3
223000ms131072kb3
233000ms131072kb3
243000ms131072kb4
253000ms131072kb2
263000ms131072kb3
273000ms131072kb2
283000ms131072kb3
293000ms131072kb2
303000ms131072kb3