北京集訓隊2016 Day4 超級跳

2021-07-11 00:28:04 字數 2160 閱讀 6341

問題描述

小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 發現,有些橋上可以看到美麗的景色,讓人心情愉悅,但有些橋狹...