日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

2015 提高组 跳石头--二分答案

發(fā)布時間:2024/8/26 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 2015 提高组 跳石头--二分答案 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

題目背景

一年一度的“跳石頭”比賽又要開始了!

題目描述

這項比賽將在一條筆直的河道中進行,河道中分布著一些巨大巖石。組委會已經(jīng)選擇好了兩塊巖石作為比賽起點和終點。在起點和終點之間,有?N?塊巖石(不含起點和終點的巖石)。在比賽過程中,選手們將從起點出發(fā),每一步跳向相鄰的巖石,直至到達終點。

為了提高比賽難度,組委會計劃移走一些巖石,使得選手們在比賽過程中的最短跳躍距離盡可能長。由于預算限制,組委會至多從起點和終點之間移走?M?塊巖石(不能移走起點和終點的巖石)。

輸入輸出格式

輸入格式:

?

第一行包含三個整數(shù)?L,N,M?,分別表示起點到終點的距離,起點和終點之間的巖石數(shù),以及組委會至多移走的巖石數(shù)。保證?L1?且?NM0?。

接下來?N?行,每行一個整數(shù),第?i?行的整數(shù)?Di?(0<Di?<L)?, 表示第?i?塊巖石與起點的距離。這些巖石按與起點距離從小到大的順序給出,且不會有兩個巖石出現(xiàn)在同一個位置。

?

輸出格式:

?

一個整數(shù),即最短跳躍距離的最大值。

?

輸入輸出樣例

輸入樣例#1:?
25 5 2 2 11 14 17 21 輸出樣例#1:?
4

說明

輸入輸出樣例 1 說明:將與起點距離為?2?和?14?的兩個巖石移走后,最短的跳躍距離為?4?(從與起點距離?17?的巖石跳到距離?21?的巖石,或者從距離?21?的巖石跳到終點)。

另:對于?20%?的數(shù)據(jù),?0MN10?。

對于?50%?的數(shù)據(jù),?0MN100?。

對于?100%?的數(shù)據(jù),?0MN50,000,1L1,000,000,000?。

?

二分答案,二分每次跳躍的最短距離,沒啥好說的。

#include<algorithm> #include<iostream> #include<cstdio> #include<cstring> #include<cmath> using namespace std; const int mxn=100500; long long Le,n,m; long long dis[mxn]; int mid; long long ans=0; int judge() {int cnt=0;int lasum=0;for(int i=1; i<=n; i++){lasum+=dis[i]-dis[i-1];if(lasum<mid){cnt++;}else lasum=0; }if(cnt>m)return 0;return 1; } int main() {scanf("%lld%lld%lld",&Le,&n,&m);int i,j;for(i=1; i<=n; i++)scanf("%lld",&dis[i]);dis[n+1]=Le;sort(dis+1,dis+n+2);n+=1;int l=0,r=Le;while(l<=r){mid=(l+r)>>1;if(judge()){l=mid+1;ans=mid;}else r=mid-1;}printf("%lld\n",ans);return 0; }

?

轉(zhuǎn)載于:https://www.cnblogs.com/rmy020718/p/9322449.html

總結(jié)

以上是生活随笔為你收集整理的2015 提高组 跳石头--二分答案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。