1. 程式人生 > >2017.10.04

2017.10.04

至少 保留小數 選擇 eas 一次 判斷 解析 hellip 二維

財富(treasure)

Time Limit: 1000ms Memory Limit: 128MB

題目描述

LYK有n個小夥伴。每個小夥伴有一個身高hi。

這個遊戲是這樣的,LYK生活的環境是以身高為美的環境,因此在這裏的每個人都羨慕比自己身高高的人,而每個人都有一個屬性ai表示它對身高的羨慕值。

這n個小夥伴站成一列,我們用hi來表示它的身高,用ai來表示它的財富。

每個人向它的兩邊望去,在左邊找到一個最近的比自己高的人,然後將ai朵玫瑰給那個人,在右邊也找到一個最近的比自己高的人,再將ai朵玫瑰給那個人。當然如果沒有比自己身高高的人就不需要贈送別人玫瑰了。也就是說一個人會給0,1,2個人玫瑰(這取決於兩邊是否有比自己高的人)。

每個人都會得到若幹朵玫瑰(可能是0朵),LYK想知道得了最多的玫瑰的那個人得了多少玫瑰。(然後嫁給他>3<)

輸入格式(treasure.in)

第一行一個數n表示有n個人。

接下來n行,每行兩個數hi,ai。

輸出格式(treasure.out)

一個數表示答案。

輸入樣例

3

4 7

3 5

6 10

輸出樣例

12

樣例解釋

第一個人會收到5朵玫瑰,第二個沒人送他玫瑰,第三個人會收到12朵玫瑰。

數據範圍

對於50%的數據n<=1000,hi<=1000000000。

對於另外20%的數據n<=50000,hi<=10。

對於100%的數據1<=n<=50000,1<=hi<=1000000000。1<=ai<=10000。

打暴力,結果文件掛了。

改了之後A了。正解單調隊列。

Code

正方形(square)

Time Limit:1000ms Memory Limit:128MB

題目描述

在一個10000*10000的二維平面上,有n顆糖果。

LYK喜歡吃糖果!並且它給自己立了規定,一定要吃其中的至少C顆糖果!

事與願違,LYK只被允許圈出一個正方形,它只能吃在正方形裏面的糖果。並且它需要支付正方形邊長的價錢。

LYK為了滿足自己的求食欲,它不得不花錢來圈一個正方形,但它想花的錢盡可能少,你能幫幫它嗎?

輸入格式(square.in)

第一行兩個數C和n。

接下來n行,每行兩個數xi,yi表示糖果的坐標。

輸出格式(square.out)

一個數表示答案。

輸入樣例

3 4

1 2

2 1

4 1

5 2

輸出樣例

4

樣例解釋

選擇左上角在(1,1),右下角在(4,4)的正方形,邊長為4。

數據範圍

對於30%的數據n<=10。

對於50%的數據n<=50。

對於80%的數據n<=300。

對於100%的數據n<=1000。1<=xi,yi<=10000。

幹了半個小時DP,然而不對。

正解離散化後二分。

對於30%直接暴力,

對於50%$n^4$枚舉上下左右四個邊,

對於80%$n^3$枚舉上下兩邊,枚舉左邊,左邊最多移動n次,右邊跟著左邊滑動。

對於100%$n^2$枚舉上下兩邊,二分判斷邊長為mid是否可行。

Code

追逐(chase)

Time Limit:1000ms Memory Limit:128MB

題目描述

這次,LYK以一個上帝視角在看豹子賽跑。

在一條無線長的跑道上,有n只豹子站在原點。第i只豹子將在第ti個時刻開始奔跑,它的速度是vi/時刻。

因此在不同的時刻,這n只豹子可能在不同的位置,並且它們兩兩之間的距離也將發生變化。

LYK覺得眼光八方太累了,因此它想找這麽一個時刻,使得最遠的兩只豹子的距離盡可能近,當然這不能是第0時刻或者第0.01時刻。它想知道的是最遲出發的豹子出發的那一刻開始,離得最遠的兩只豹子在距離最小的時候這個距離是多少。

當然這個時刻不僅僅可能發生在整數時刻,也就是說可能在1.2345時刻這個距離最小。

輸入格式(chase.in)

第一行一個數n。

接下來n行,每行兩個數分別是ti和vi。

輸出格式(chase.out)

輸出一個數表示答案,你只需保留小數點後兩位有效數字就可以了。

輸入樣例

3

1 4

2 5

3 7

輸出樣例

0.33

樣例解釋

在第5+2/3這個時刻,第一只豹子在18+2/3這個位置,第二只豹子在18+1/3這個位置,第三只豹子在18+2/3這個位置,最遠的兩只豹子相距1/3的距離,因此答案是0.33。

數據範圍

對於20%的數據n=2。

對於20%的數據n=3

對於60%的數據n<=100。

對於80%的數據n<=1000。

對於100%的數據n<=100000,1<=vi,ti<=100000。

讀錯題…是速度為vi每時刻,不是vi除以時刻,所以是一個一次函數,求一下解析式(一般式)求兩個凸殼,然後求出凸殼頂點距離的最小值就行了。

Code

2017.10.04