SCAU 18725 宇宙迁跃(二分法)

18725 宇宙迁跃
时间限制:1000MS 代码长度限制:10KB
提交次数:0 通过次数:0

题型: 编程题 语言: G++;GCC
Description
在基地的科学家发明“透镜”之后,宇宙航行变得更加效率。
作为基地元首的的代理人,你需要在K天内乘坐飞船到达首都川陀。
飞船可以花费一天时间,通过迁跃从一个星系到达另一个星系,但绝不能迁跃到星系之间,那样不但会遇到一些自然危险,也可能永远迷失。
我们把基地至川陀间星系的坐标看成是一个线性序列,例如a星系坐标是10,b星系坐标是15,那么飞船必须具备不小于5的迁跃能力才能从a航行至b。
基地坐标为0,请你根据基地至川陀间的N个星系坐标,计算飞船的迁跃能力至少为多大,才能在K天内(包含K天)到达川陀。

输入格式
第一行两个整数N和K。(1=<N<=10000,1=<K<=10000)
第二行N个整数,表示N个星系的坐标ai,题目确保坐标由小到大排列。(0=<ai<=100000)

输出格式
仅一行,飞船的最小迁跃能力。

输入样例
5 2
1 4 6 10 19

输出样例
10

提示
样例说明:川陀的坐标为最后一个值19。
飞船的迁跃能力至少为10,才能在2天内到达川陀。

思路:
1.二分法
2.建立一个distanc数组存储星系之间距离,也就是飞船跨越每个星系要飞行的距离,然后二分法找到符合条件的跃迁能力power,power相当于能量,每到达一个星系能量相应减少,直至为0,此时飞船必须停落在星系上,等待第二天飞行,即天数加1。循环之后,看天数是否满足要求。

代码:

#include<iostream>
using namespace std;
int ai[10005]={0}, distanc[10005];//ai表示迁跃能力,distanc指星系之间距离
int n, k, max1 = 0;//max1指最大距离
int check(int power)
{
    int day = 0; 
    if (max1 > power)return 0;
    int powert = power;//power在之后会用到,为了不影响power的值,这里将power值赋给powert
    for (int i = 0;i <n;i++)
    {
        powert = powert - distanc[i];
        if (powert >=0)continue;//如果能量够用,继续飞往下一个星系

        //能量不够用
            day++;//天数增加
            powert = power;//恢复能量
            i=i-1;//在能量耗尽前必须到达一个星系
    }
    day++;// cout << powert<<" "<<day << endl;
    return day <= k;
}
int main()
{
    cin >> n >> k;
    //初始化
    for (int i = 1;i <= n;i++)
    {
        cin >> ai[i];
        distanc[i - 1] = ai[i] - ai[i - 1];//存储相邻星系距离
        if (max1 < distanc[i-1])max1 = distanc[i-1];//记录相邻两星系距离最大值
    }
    //二分法
    int l = 1, r = 1e9;
    int mid, best = 0;
    while (l <=r)
    {
        mid = (l + r) / 2;
        if (check(mid)) { best = mid;r = mid - 1; }
        else l = mid + 1;
    }
    cout << best;
    return 0;
}

在这里插入图片描述

新手小白,有问题欢迎大佬指正

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
IMoV多元宇宙算法是一种基于多元宇宙理论的算法。多元宇宙理论是指存在多个平行宇宙的理论,每个平行宇宙都是独立的,拥有自己的自然定律和规则。 IMoV多元宇宙算法的核心思想是通过模拟多个平行的宇宙来解决问题。它利用多元宇宙的独立性和不同宇宙之间的差异,从而寻找问题的最优解。算法中使用了演化算法、优化算法和模拟退火算法等多种搜索和优化技术,以提高搜索的效率和准确性。 IMoV多元宇宙算法的具体步骤如下: 1. 初始化多元宇宙的初始状态,包括每个宇宙的初始解、适应度函数等。 2. 利用搜索和优化技术,根据当前宇宙的状态选择下一个宇宙,并对该宇宙进行进一步的搜索和优化。 3. 根据适应度函数评估各个宇宙的性能,选择性能最好的宇宙作为当前宇宙,并更新当前宇宙的状态。 4. 重复步骤2和3,直到达到停止准则。 IMoV多元宇宙算法具有以下特点: 1. 并行性:由于每个宇宙是独立的,可以通过并行计算的方式来减少搜索时间。 2. 独立性:多元宇宙的独立性使得算法能够在不同宇宙间进行探索,从而寻找全局最优解。 3. 自适应性:算法能够自适应地调整宇宙的状态,以提高搜索的效率和准确性。 IMoV多元宇宙算法在解决问题时表现出了较高的效率和鲁棒性,适用于各种优化和搜索问题。它的应用领域包括机器学习、数据挖掘、图像处理和科学计算等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值