問題描述
小h最近迷上了一款叫做「超級跳」的休閒遊戲。
遊戲中,有n層雲朵。你控制乙個小人,出生在第n層雲朵上,目標是不斷向下跳,最終抵達地面。為了方便,這裡對遊戲做一些簡化。
如果建立平面座標系,可以將每層雲朵抽象成一條平行於x軸的線段。第i層雲朵可以抽象成一條縱座標等於i,左右端點的橫座標分別是li和ri的線段。
小人可以抽象成乙個點,出生點座標是(s, n),保證在第n層雲朵上。每次操作,在不越出雲朵邊界的前提下,你可以控制小人向左移動1單位距離,耗費時間是p;也可以控制小人向右移動1單位距離,耗費時間是q。如果小人處在雲朵的邊緣(即座標與線段端點重合),你可以控制它向下跳,那麼它將一直墜落到最近的一層雲朵或者地面(如果下面沒有雲朵)上,墜落耗費的時間等於下落的高度。特別地,如果某次下落的高度大於h,小人就會死掉,遊戲失敗。當小人成功落到地面(即x軸)上時,你就順利通關了。
這一次,小h嘗試了無數次仍無法在時限內通過某關。你能幫助他嗎?
輸入格式
第一行,五個整數n,s,h,p,q。
接下來n行,每行兩個整數li和ri,依次表示每層雲朵的左右端點的橫座標。
輸出格式
輸出乙個整數,表示小人降落到地面最少花費的時間。
如果不可能成功降落到地面,輸出-1。
樣例輸入
4 0 2 1 1
-2 1
-1 2
-3 0
-2 1
樣例輸出
樣例說明
如上圖。出生在s點,先向右移動1單位,向下跳到第2層雲朵上,再向右移動1單位,再向下跳,就降落到地面上了。這也是耗時最少的方案。
資料規模和約定
40%的資料中,1 ≤n≤ 100。
100%的資料中,1 ≤n, h≤10^5,1 ≤p, q ≤10,-10^5≤li≤ri≤10^5,ln≤s≤rn。設f
li,f
ri,f
p 分別為第
i 層左端和右端和點
p到地面的最短時間,則很容易發現: fl
i=mi
n 其中t
l 為第
i 層左端點豎直向下落到的點,tr
為第i層右端點豎直向下落到的點。當然前提是不會摔死。
在層內走是很容易算出來的,在此就不做敘述。
我們只需要知道如何用i求出
tl,t
r 在那一層即可。
於是想到用線段樹覆蓋,從最底層做起,每上公升一層,將這一層覆蓋到線段樹上,之後只需看
i 橫座標向下最後覆蓋的是那一層即可。
這裡線段樹可以用map來實現,可以減少打量**。
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
ifstream cin("jump.in");
ofstream cout("jump.out");
typedef
long
long ll;
typedef
map::iterator it;
map tree;
int et = -1;
int n, h, s, p, q;
int l[100050], r[100050], ml = 1000000;
ll f[500050][2];
void insert(int i, int l, int r)
int getlastest(int point)
void readin()
}void work()
} else
}tmp = getlastest(r[i]);
if (tmp == 0)
} else
}insert(i, l[i], r[i]+1);
}ll ans = min(f[n][0] + (ll)(s - l[n]) * (ll)p, f[n][1] + (ll)(r[n] - s) * (ll)q);
if (ans >= 1000000000000ll) else
}int main()
國家集訓隊 旅遊
題目背景 ray 樂忠於旅遊,這次他來到了 t 城。t 城是乙個水上城市,一共有 nn 個景點,有些景點之間會用一座橋連線。為了方便遊客到達每個景點但又為了節約成本,t 城的任意兩個景點之間有且只有一條路徑。換句話說,t 城中只有 n 1n 1 座橋。ray 發現,有些橋上可以看到美麗的景色,讓人心...
國家集訓隊 Tree I
題目 給你乙個無向帶權連通圖,每條邊是黑色或白色。讓你求一棵最小權的恰好有nee dneed need 條白色邊的生成樹。題目保證有解。思路 凸優化裸題,要注意的就是,優先選白色 優先選黑色也行 主要是同一斜率可能會切到很多點,那麼就要有乙個標準,要麼選最小點,要麼選最大。另外求出來的點不一定是ne...
國家集訓隊 旅遊
ray 樂忠於旅遊,這次他來到了 t 城。t 城是乙個水上城市,一共有 n 個景點,有些景點之間會用一座橋連線。為了方便遊客到達每個景點但又為了節約成本,t 城的任意兩個景點之間有且只有一條路徑。換句話說,t 城中只有 n 1 座橋。ray 發現,有些橋上可以看到美麗的景色,讓人心情愉悅,但有些橋狹...