二分6 豌豆射手 2021 02 12更

2021-10-19 09:37:42 字數 949 閱讀 2189

今天是春節,祝所有人在新的一年牛氣沖天,心想事成。

新版的植物大戰殭屍遊戲中,有乙個豌豆射手戰士,它每次發射出的一枚豌豆就能消滅乙個殭屍,儘管殺傷力大,但它卻有兩個缺點:

不能連續發射豌豆,必須要等待 k 秒才能發射下一枚豌豆。

有射程限制,必須在射程 m 內才能擊中殭屍。

殭屍先生是始終都在朝向豌豆射手以單位速度1直線前進的,如果在到達豌豆射手的位置時都還不能消滅這個殭屍,那就 「 game over 」了。

最開始的時候,豌豆射手就擁有一枚豌豆,現在你作為玩家,要計算出等待時間 k 最大為多少?

輸入第一行有兩個整數n和m,(2≤n≤100,000; 1≤m≤10,000,000)n 代表殭屍個數,m代表射程。

接下來有n行,每行乙個整數mi,(1≤mi≤10,000,000),代表每個殭屍一開始相對豌豆射手的距離。

輸出乙個整數,代表豌豆射手的最長等待時間。

輸入樣例

6 100

236120

120120

120120

輸出樣例

25其實做這道題的時候我坐了很久都不對,測試樣例一直都在輸出1,然後我想了很久,才想到了問題,就是在chk函式中判斷當前x值是否符合要求的時候,不能光看它當前是否會被殭屍kill掉,還要判斷最後x如果等於m的情況下這個x是否合理,不然的話就會輸出錯誤答案。

ps:二分範圍是0到最遠的殭屍位置,不是1到最遠的殭屍位置!

#include

using

namespace std;

long

long n,t,a[

100010];

bool

chk(

long

long x)

}int

main()

cout

}

二分的一些總結 6個二分答案 1個二分查詢

二分答案 1 int l 0,r 1e9 2while l r 查詢 x的第乙個數的下標 1 int look int l,intx 8 return ans 9 查詢 x的最後乙個數的下標 1 int look int l,intx 8 return ans 9 查詢小於x的最後乙個數的下標 1 ...

1128 二分 二分查詢

時間限制 10000ms 單點時限 1000ms 記憶體限制 256mb 描述nettle最近在玩 艦 因此nettle收集了很多很多的船 這裡我們假設nettle氪了很多金,開了無數個船位 去除掉重複的船之後,還剩下n 1 n 1,000,000 種不同的船。每一艘船有乙個稀有值,任意兩艘船的稀有...

二分(二分答案 二分搜尋)與單調性

經典二分搜尋是二分空間範圍。二分答案又叫二分猜值,是二分解的值空間。其實可以統一,普通的二分搜尋也是二分答案值域 下標空間,也是猜值。二分必須滿足單調性,最直觀的,二分搜尋只能在有序陣列上進行。單調性體現在,下標和元素值是單調的,也就是 if j i 有 a j a i 一般二分答案解決的問題是最優...