高阶函数 Nginx golang JS 观察者模式 cookies Draggabilly vue版本 vuejs视频教程 郑州普通话考试 angular视频 electron安装 js获取焦点事件 android富文本框架 map删除指定元素 安卓程序源代码 nodejs后端开发 普通话网上报名 java开发教程 java的基本类型 java自学教程 java的运行环境 java生成文件 java中new java中的集合 java接口规范 java创建对象 谷歌地球打不开 超级煎蛋卷 m4a转mp3格式转换器 java程序设计基础 刺激战场脚本 防沉迷助手 图片生成网址 只狼脚本 linux端口映射 战斗的召唤 JScodeblocks汉化包 毕业证件照 ps反向选择的快捷键
当前位置: 首页 > 学习教程  > 编程语言

P2678跳石头

2020/10/8 20:25:41 文章标签:

#include <bits/stdc.h> const int maxn 500010; using namespace std; int a[maxn]; int l,n,m;//起点到终点的距离&#xff0c;起点和终点之间的岩石数&#xff0c;至多移走的岩石数 bool check(int val) {int cnt 0,pre 0;//当前位置&#xff0c;已经移走的石头数目…

#include <bits/stdc++.h>
const int maxn = 500010;
using namespace std;
int a[maxn];
int l,n,m;//起点到终点的距离,起点和终点之间的岩石数,至多移走的岩石数
bool check(int val)
{
    int cnt = 0,pre = 0;//当前位置,已经移走的石头数目
    for(int i = 1;i < n + 1;i++)
    {
        if(a[i] - a[pre] < val)cnt++;
        else pre = i;
        if(cnt > m)return false;
    }
    return cnt <= m;
}
int main()
{
    int ans;
	scanf("%d%d%d",&l,&n,&m);
	for(int i = 1;i <= n;i++)
        scanf("%d",&a[i]);
    a[n + 1] = l;
    int left = 0,right = l;
    while(left <= right)
    {
        int mid = (left + right) / 2;
        if(check(mid))left = mid + 1,ans = mid;
        else right = mid - 1;
    }
    cout<<ans<<endl;
	return 0;
}


本文链接: http://www.dtmao.cc/news_show_250293.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?