首页 > 其他分享 >NOIP2015Day2T1-跳石头

NOIP2015Day2T1-跳石头

时间:2022-11-22 18:37:37浏览次数:61  
标签:stone 终点 NOIP2015Day2T1 岩石 距离 石头 longint 起点


1.跳石头

(stone.cpp/c/pas)

【问题描述】

一年一度的“跳石头”比赛又要开始了!

这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有N 块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达终点。

为了提高比赛难度,组委会计划移走一些岩石,使得选手们在比赛过程中的最短跳跃距离尽可能长。由于预算限制,组委会至多从起点和终点之间移走M 块岩石(不能移走起点和终点的岩石)。

【输入格式】

输入文件名为stone.in 。

输入文件第一行包含三个整数L ,N ,M ,分别表示起点到终点的距离,起点和终点之间的岩石数,以及组委会至多移走的岩石数。

接下来N 行,每行一个整数,第i 行的整数Di (0 < Di < L)表示第i 块岩石与起点的距离。这些岩石按与起点距离从小到大的顺序给出,且不会有两个岩石出现在同一个位置。

【输出格式】

输出文件名为stone.out 。

输出文件只包含一个整数,即最短跳跃距离的最大值。


NOIP2015Day2T1-跳石头_2015

【输入输出样例1说明】

将与起点距离为2和14的两个岩石移走后,最短的跳跃距离为4(从与起点距离17的岩石跳到距离21的岩石,或者从距离21的岩石跳到终点)。

【输入输出样例2】

见选手目录下的stone/stone2.in和stone/stone2.ans。

【数据规模与约定】

对于20%的数据,0 ≤ M ≤ N ≤ 10。

对于50%的数据,0 ≤ M ≤ N ≤ 100。

对于100%的数据,0 ≤ M ≤ N ≤ 50,000,1 ≤ L ≤ 1,000,000,000。

这题有很明显的二分性。

var
len,n,m,i,ans:longint;
a:array[1..50000]of longint;
function erfen(l,r:longint):longint;
var mid,k,move,i:longint;
begin
if l>r then exit(l);
mid:=(l+r)div 2;
k:=0;
move:=0;
for i:=1 to n+1 do
if a[i]-k<mid then inc(move) else k:=a[i];
if move<=m then exit(erfen(mid+1,r)) else exit(erfen(l,mid-1));
end;
begin
readln(len,n,m);
for i:=1 to n do readln(a[i]);
a[n+1]:=len;
ans:=erfen(1,len)-1;
writeln(ans);
end.

标签:stone,终点,NOIP2015Day2T1,岩石,距离,石头,longint,起点
From: https://blog.51cto.com/u_15888102/5878311

相关文章

  • 代码随想录day43 | 1049. 最后一块石头的重量 II 494. 目标和 474. 一和零
    1049.最后一块石头的重量II题目|文章思路求剩余石头的最小重量。如果两个石头最接近总重量的平均值,那么剩余石头为最小重量。所以先求出石头的总重量的一半。1.数......
  • OpenJudge 1.7.04 石头剪子布
    04:石头剪子布总时间限制:1000ms内存限制:65536kB描述石头剪子布,是一种猜拳游戏。起源于中国,然后传到日本、朝鲜等地,随着亚欧贸易的不断发展它传到了欧洲,到了近现代......
  • 最后一块石头的重量
    难度:简单题目有一堆石头,每块石头的重量都是正整数。每一回合,从中选出两块最重的石头,然后将它们一起粉碎。假设石头的重量分别为 x和 y,且 x<=y。那么粉碎的可能结果......
  • Mediapipe 手势识别:石头、剪刀、布
    参考:Mediapipe手势识别  使用该文章代码时,报错如下:TypeError:create_int():incompatiblefunctionarguments.Thefollowingargumenttypes原因:self.mpHands.Ha......
  • ctfshow新手杯剪刀石头布(session反序列化)
    看到ini_set('session.serialize_handler','php');让我不由自主的想起了session反序列化漏洞的一道题。直接百度会有很多文章这里不多介绍。因此我们的解法就是:1.post一......
  • 1049.last-stone-weight-ii 最后一块石头的重量
    问题描述1049.最后一块石头的重量II解题思路实际上还是一个01背包问题。本质上是在求将数组分成差值最小的两部分之后,这两部分的差值,理解了这一点之后,参照416.分割等和......
  • Python中的石头剪刀布游戏
    Python中的石头剪刀布游戏继续阅读WordPress继续阅读知乎版权声明:本文为博主原创文章,遵循CC4.0BY-SA版权协议,转载请附上原文出处链接和本声明本文链接:https:/......
  • [2015年NOIP提高组] 跳石头
    先用二分法谋定一个数,temp_ans=(L+R)/2;我们假设这个temp_ans,就是所有删除方案中,maxn个最小差值中的最大的那个,即答案:ans。而根据题目要求,我们需要拿掉M个石头。所......
  • [2015年NOIP提高组] 跳石头
    运用二分策略先写函数确定距离,然后看要搬的石头数满足题意吗。距离确定后,把间距小于确定距离的需要全部搬走。然后向左或向右再找更小或大的距离每次都检查是否能仅移走......
  • 跳石头
    先把跳跃距离二分,然后把这个值作为当前的解,然后用一个check函数判断当前解是否合法,如果合法,那么就去右边继续找,如果不合法,那么就去左边寻找。最主要的就是check函数,可以先......