• 10270 : 青蛙的游戏


    问题描述
    青蛙王国的年度游戏再次开始。 最著名的比赛是铁蛙铁人三项。 铁蛙铁人三项的一项跳跃比赛。 这个项目需要青蛙运动员跳过河。 河的宽度是L(1 <= L <= 1000000000)。 有n(0 <= n <= 100000)个石块排成一条直线。 青蛙过河只能借助于石头。 如果他们掉进河里,他们就出局。 现在要求青蛙最多跳m(1 <= m <= n + 1)次。 现在青蛙想知道要跳过河,他们至少有什么能力。 (即至少具有跳多远的能力)。
    输入格式
    第一行包含三个正整数L,n和m。
    然后接下来n行。 每个代表从开始岸边到第n块石头的距离,两块石头出现在一个地方是不可能的。
    输出格式
    输出一个整数,代表青蛙至少应该有的能力。
    样例输入
    25 3 3
    11
    2
    18
    样例输出
    11


    本题用2分法

    #include <bits/stdc++.h>     
    using namespace std;  
    int a[500001],L,n,m,ll,rr,mid,ans;   
    int check(int k)
    {    
        if(k*m<L) return 1;
    	int cnt=0,i=1,j=0;
    	
    	while(i<=n+1)
    	{
    		cnt++;
    		while(i<=n+1&&a[i]-a[j]<=k) i++;
    		j=i-1;
    	}
    	return cnt > m;
    }
    int main()
    {
    	while(cin>>L>>n>>m)
    	{
    		for(int i=1;i<=n;i++) cin>>a[i];
    		sort(a+1,a+1+n);
    		a[0]=0;
    		a[n+1]=L;
    		ll=0;
    		rr=L;
    		while(ll<=rr)
    		{
    			mid=(ll+rr)>>1;
    			if(check(mid)) ll=mid+1;
    			else ans=mid,rr=mid-1;
    		}
    		cout<<ans<<endl;
    	}
    	::::::::::::::::::::::::
    }
    
  • 相关阅读:
    Linux 添加Nginx 到 service 启动
    PHP编译安装时常见错误解决办法,php编译常见错误
    7 适配器模式
    6 单例模式及其多线程问题
    5 简单工厂、工厂、抽象工厂
    4 装饰者模式
    3 观察者模式
    2 策略模式
    1 UML基础
    代码操作Word时,目录自动更新的两种方法
  • 原文地址:https://www.cnblogs.com/wuzetian/p/9900398.html
Copyright © 2020-2023  润新知