題目:洛谷p2678、vijos p1981、codevs4768、uoj#148。
題目大意:有n塊石頭,現在要從起點0依次跳過所有石頭跳到終點l。現在要去掉m塊石頭,使選手跳過的最短距離最長,求最長是多少。
解題思路:本題是最大化最小值問題,考慮二分答案解決。
判斷答案可行性用貪心。用now記錄前一塊石頭的位置。如果當前一塊石頭i和前一塊的差值小於當前答案時,令now=i,否則必定要去掉這塊石頭,計數器cnt+1。最後如果cnt≤m則答案可行。
時間複雜度$o(n\log _2 l)$。
c++ code:
#includeusing namespace std;int l,n,m,a[50005];
bool ok(int ans)else ++cnt;
return cnt<=m;
}int main(void)
printf("%d\n",ans);
return 0;
}
NOIP2015提高組 跳石頭
問題描述 一年一度的 跳石頭 比賽又要開始了 這項比賽將在一條筆直的河道中進行,河道中分布著一些巨大岩石。組委會已經選 擇好了兩塊岩石作為比賽起點和終點。在起點和終點之間,有 n 塊岩石 不含起點和終 點的岩石 在比賽過程中,選手們將從起點出發,每一步跳向相鄰的岩石,直至到達 終點。為了提高比賽難度...
NOIP2015 洛谷2678 跳石頭
題目背景 一年一度的 跳石頭 比賽又要開始了 題目描述 這項比賽將在一條筆直的河道中進行,河道中分布著一些巨大岩石。組委會已經選擇好了兩塊岩石作為比賽起點和終點。在起點和終點之間,有 n 塊岩石 不含起點和終 點的岩石 在比賽過程中,選手們將從起點出發,每一步跳向相鄰的岩石,直至到達 終點。為了提高...
NOIP2015跳石頭(洛谷2678)
標籤 二分 題目背景 一年一度的 跳石頭 比賽又要開始了 題目描述 這項比賽將在一條筆直的河道中進行,河道中分布著一些巨大岩石。組委會已經選擇好了兩塊岩石作為比賽起點和終點。在起點和終點之間,有 n 塊岩石 不含起點和終點的岩石 在比賽過程中,選手們將從起點出發,每一步跳向相鄰的岩石,直至到達 終點...