JZOJ Day 7 普及模擬 螞蟻

2021-08-03 17:41:58 字數 1230 閱讀 8091

題目描述

n只螞蟻以每秒1cm的速度在長為lcm的竿子上爬行。當螞蟻爬到竿子的端點時就會掉落。由於竿子太細,兩隻螞蟻相遇時,它們不能交錯通過,只能各自反向爬回去。對於每只螞蟻,我們知道它距離竿子左端的距離xi,但不知道它當前的朝向。請計算各種情況當中,所有螞蟻落下竿子所需的最短時間和最長時間。
例如:竿子長10cm,3只螞蟻位置為2 6 7,最短需要4秒(左、右、右),最長需要8秒(右、右、右)。

輸入第1行:2個整數n和l,n為螞蟻的數量,l為桿子的長度(1 <= l <= 10^9, 1 <= n <= 50000)

第2 - n + 1行:每行乙個整數a[i],表示螞蟻的位置(0 < a[i] < l)

輸出輸出2個數,中間用空格分隔,分別表示最短時間和最長時間。

樣例輸入

3 10

2 6

7樣例輸出

4 8資料範圍限制

對於10%的資料n≤1

對於20%的資料n≤2

對於50%的資料n≤5

對於60%的資料n≤50

對於70%的資料n≤500

對於80%的資料n≤5000

對於100%的資料n≤50000

提示資料有梯度,歡迎合理騙分。

分析 考慮每只螞蟻較複雜,我們試著轉換思想

看成螞蟻碰頭之後不回頭,因為每個螞蟻都是一樣的。

設螞蟻位置為pi,最短時間=max(min(pi, l-pi)),最長時間=max(max(pi,l-pi))

程式:

uses math;

vari:longint;

n,l,short,long:int64;

p:array[0.

.50000]of int64;

begin

readln(n,l);

short:=0;long:=0;

for i:=1

to n do

begin

readln(p[i]);

if min(p[i],l-p[i])>short

then

short:=min(p[i],l-p[i]);

if max(p[i],l-p[i])>long

then

long:=max(p[i],l-p[i]);

end;

write(short,' ',long);

end.

JZOJ Day 2 普及模擬 串

題目描述 給定乙個0 1串,請找到乙個盡可能長的子串,其中包含的0與1的個數相等。輸入乙個字串,只包含01,長度不超過1000000。輸出 一行乙個整數,最長的0與1的個數相等的子串的長度。樣例輸入 1011 樣例輸出 2 資料範圍限制 30 的資料 串的長度 20 程式 var s ansistr...

JZOJ Day 1 普及模擬 PLES

題目描述 在舞會上有n個男孩和n個女孩,每個人都量過了自己的身高。每個男孩只跟女孩跳舞,並且女孩也只跟男孩跳舞。每個人最 多只有乙個舞伴。男孩或者想和比自己高的女孩跳舞,或者想和比自己低的女孩跳舞,同樣的,女孩也是或者想和比自己高的男 孩跳舞,或者想和自己低的男孩跳舞。你能決定最多有多少對能在一起跳...

JZOJ Day 4 普及模擬 遊戲

題目描述 guyu guo和tube lu正在玩乙個遊戲 lu默想乙個1和n 之間的數x,然後guo嘗試猜出這個數。guo能提出m個這樣的問題 未知數是否能被yi整除?遊戲按照如下流程進行 guo先給出他想問的全部m個問題,然後lu對所有問題依次以 是 或 否 作答。得到m個問題的答案之後,guo就...