松雅的花園

2021-09-30 01:19:16 字數 1380 閱讀 4649

【問題描述】

冬天到了,松雅覺得是時候給她的花園澆水了。

她的花園由 n 個連續的苗圃組成,編號從 1~n。其中的 k 個苗圃安裝有水龍頭(第 i 個水龍頭位於苗圃 xi),當水龍頭開啟的時候,可以同時給相鄰的苗圃澆水。1個時間單位後,她可以給苗圃 xi 澆好水,2個時間單位後,她可以給 [xi-1, xi+1] 範圍內的苗圃(如果有)澆好水,在 j 個時間單位後,她可以給[xi-(j-1),xi+(j-1)]內的苗圃(如果有)澆好水。

圖中白色表示該苗圃沒有水龍頭,紅色表示該苗圃有乙個水龍頭

水龍頭開啟2個時間單位後,白色部分表示沒有澆到水的苗圃,藍色部分表示已澆水的苗圃

松雅希望在同一時刻開啟所有水龍頭,她想知道,最少到多少個時間單位以後整個花園都能澆好水。
【輸入形式】

第一行乙個整數表示測試資料的組數。

接下來t組測試資料 ,每組資料的第一行包含兩個整數 n 和 k,分別表示她的花園中的苗圃數和水龍頭數,接下來的一行為 k 個整數 xi,表示第 i 個水龍頭所在的位置,輸入保證對於每個 i >=2,xi - 1 < xi 。

本題只考慮整數單位時間。

【輸出形式】

對於每個測試用例,每個用例輸出一行乙個整數,表示所有水龍頭同時開啟後整個花園澆好水所需要的最小時間單位數。
【樣例輸入】

35 1

33 3

1 2 3

4 11

【樣例輸出】31

4

#include

using

namespace std;

intmain()

b[0]

=a[0];

//起始苗圃到第乙個水龍頭間匯滿水的時間為第乙個水龍頭的位置

for(

int y=

1;y)//迴圈,水龍頭間的苗圃匯水的時間計算,賦值

else b[y]=1

+cunchu/2;

//當為奇數時,兩邊同時匯水至中間,匯水時間為1+(cunchu-1+1)/2

} b[k]

=n-a[k-1]

+1;//最後乙個水龍頭到末端苗圃分別匯滿水的時間

int max=0;

//定義max儲存b陣列中元素的最大值即匯水時間最小值

for(

int z=

0;z1;z++

) cout<

//輸出,換行

}return0;

}

松雅的旅館

問題描述 松雅認為,擁有自己的旅館是賺錢的最好方式,因為她可以在任何她想要的地方賺錢和休閒。松雅生活的國度是乙個無盡頭的線狀型,在這條直線的每個整數座標上有一座城市。她有n個旅館,第i個旅館位於具有座標xi的城市。松雅是位聰明的女孩,她不會在同一城市開設兩家或多家旅館。松雅想拓展業務,因此,她決定開...

松雅的自動門

問題描述 松雅的旅館門口有乙個自動門,按照以下方式工作 當門是關閉的時候,1或多個人來到門前,門將馬上自動開啟,所有人都能馬上入內 當門是開啟的時候,1或多個人來到門前,所有人都能馬上入內 開啟的門在開啟後的 d 秒鐘內立即關閉 當門正在關閉時,1或多個人在同一時刻來到門前,所有人有足夠時間入內,之...

松雅的自動門問題

松雅的旅館門口有乙個自動門,按照以下方式工作 當門是關閉的時候,1或多個人來到門前,門將馬上自動開啟,所有人都能馬上入內 當門是開啟的時候,1或多個人來到門前,所有人都能馬上入內 開啟的門在開啟後的 d 秒鐘內立即關閉 當門正在關閉時,1或多個人在同一時刻來到門前,所有人有足夠時間入內,之後才會關閉...