首页 > 其他分享 >noip2015 跳石头

noip2015 跳石头

时间:2024-01-17 19:56:10浏览次数:34  
标签:noip2015 return 题意 int sum mid 石头

原题链接

根据最近的刷题经验,这种求最大最小值问题都是二分答案。

首先,我们确定面对一个k,如果它符合题意,那么比他小的值也符合,如果他不符合题意,那么比他大的值更不符合;那么我们要求的就是符合找出11110000中最右边边的1。

接着,我们该如何判断k是否符合题意呢?

显而易见,从起点遍历所有的石头求和距离直到sum>=k,接着判断移除的石头数量是否超过了m。

主要代码:

#include<bits/stdc++.h>
using namespace std;
const int N=1e9;
int a[50005];
int l,m,n;
bool check(int mid){  //判断是否该答案是否符合题意 
    int sum=a[1],cnt=0;
    for (int i=2;i<=n+1;i++){
        if (sum<mid){
            sum=sum+a[i]-a[i-1];   //求和直至sum>=mid 
            cnt++;
        }
        else sum=a[i]-a[i-1];
        if (cnt>m) return false;  //判断拿走的石头数量是否超过m 
    }
    if (sum<mid) 
        if (cnt>=m) return false;
    return true;
}
int main(){
//    freopen("input.txt","r",stdin);
//    freopen("output.txt","w",stdout);
    cin>>l>>n>>m;
    for (int i=1;i<=n;i++) cin>>a[i];   //存每个石头的位置 
    a[n+1]=l;   //要把终点的位置也存起来,因为要算最后一个石头与终点的距离 
    int left=0,right=l+1;
    while (left+1<right){  //二分答案 
        int mid=left+(right-left>>1);
        if (check(mid)) left=mid;
        else right=mid;
    } 
    printf("%d\n",left);
    return 0;
} 

 

标签:noip2015,return,题意,int,sum,mid,石头
From: https://www.cnblogs.com/purple123/p/17971043

相关文章

  • Spring 应用合并之路(一):摸石头过河 | 京东云技术团队
    公司在推进降本增效,在尝试多种手段之后,发现应用太多,每个应用都做跨机房容灾部署,则最少需要4台机器(称为容器更合适)。那么,将相近应用做一个合并,减少维护项目,提高机器利用率就是一个可选方案。经过前后三次不同的折腾,最后探索出来一个可行方案。记录一下,分享出来,希望对有相关需求的......
  • 【Python爬虫课程设计】大数据分析——东方财富石头科技股市数据分析
    一、选题课程背景在当今信息化时代,数据已成为驱动各行各业发展的重要力量。股市作为经济的晴雨表,其数据更是备受关注。东方财富网作为国内知名的财经网站,拥有海量的股市数据。随着大数据技术的不断发展,数据在各行各业的应用越来越广泛。股市作为经济的核心,其数据的价值不言而喻。......
  • 低多边形3D建模石头材质纹理贴图
    在线工具推荐:3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.jsAI自动纹理开发包 - YOLO虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎当谈到游戏角色的3D模型风格时,有几种不同的风格:写实风格:这种风格追求高度真实......
  • 【洛谷 P2670】[NOIP2015 普及组] 扫雷游戏 题解(模拟)
    [NOIP2015普及组]扫雷游戏题目背景NOIP2015普及组T2题目描述扫雷游戏是一款十分经典的单机小游戏。在行列的雷区中有一些格子含有地雷(称之为地雷格),其他格子不含地雷(称之为非地雷格)。玩家翻开一个非地雷格时,该格将会出现一个数字——提示周围格子中有多少个是地雷格。游戏的......
  • NOIP2015普及组金币
    NOIP2015普及组金币题目数据(n<=10000)根据题目要求与我们原来学过的打印数字三角形图形很相似。数字三角形如下,数字可以对应成天数:12 34  5  67  8  9  10每天加的金币就是行坐标即可:12  23  3  34  4  4  4代码如何:#includ......
  • P2678 跳石头
    题目描述这项比赛将在一条笔直的河道中进行,河道中分布着一些巨大岩石。组委会已经选择好了两块岩石作为比赛起点和终点。在起点和终点之间,有N块岩石(不含起点和终点的岩石)。在比赛过程中,选手们将从起点出发,每一步跳向相邻的岩石,直至到达终点。为了提高比赛难度,组委会计划移走......
  • P2678 跳石头 题解
    P2678跳石头链接这道题其实很水我们二分最长距离,最后用$check$函数判断合不合法一下是核心代码$check$函数这样写:boolcheck(intx){ intlast=0,tot=0; for(inti=1;i<=n;i++){ if(a[i]-last<x)tot++; elselast=a[i]; } if(len-last<x)tot++; returntot<......
  • 【洛谷 P2669】[NOIP2015 普及组] 金币 题解(循环)
    [NOIP2015普及组]金币题目背景NOIP2015普及组T1题目描述国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这......
  • 2022新生赛 玩石头 题解
    这题乍一看是个背包,但是它对背包物品的重量进行了限制,而且我们没有手段得知当前物品是否大于前面所有物品。研究发现,纪念品最大价值不会超过4000.因此我们可以用类似于01背包的做法,以纪念品价值作为重量,纪念品重量作为价值来dp.打表可以发现,在给定数据的范围下,石头塔最多为三十层,......
  • 【文档翻译】面向数据设计(以及为啥用OOP可能会搬起石头砸自己的脚)
    本文档译自gamesfromwithin.com的文章"Data-OrientedDesign(OrWhyYouMightBeShootingYourselfInTheFootWithOOP)",作者Noel,原文参见此处概述-Overview想象一下:在开发周期的末尾,你的游戏卡的像乌龟在爬,但是你却没有在profiler发现任何明显的性能热点。真正的......