机器人跳跃问题——二分优化加注意事项

题目链接

思路:

思路很简单,首先获取输入的H(min)和H(max),在这之间二分枚举,每一次判断是否合法,如果合法则r=mid继续枚举

注意:

每一次判断时,可能会出现爆数据的现象,两种方法解决
1取模,这里取模方式很重要,单独取模e%=mod会出错
2判断 if(e>=ma) return true;

#include<bits/stdc++.h>

using namespace std;
const int N = 1e5+9;
typedef long long LL;
const int mod = 1e9+7;
int a[N];
int n;
int  check(LL e,int ma)
{
    for(int i=1;i<=n;i++)
    {
        //e+=(e-b[i]);
        //注意这里要去取模,或者按照 if(e>=ma) return true;
       e+=((e-a[i])%mod)%mod;
      // e%=mod;
       if(e<0) return 0;
      // if(e>=ma) return true;
    }
   // cout<<endl;
   return 1;
}
int main()
{
    
    cin>>n;
    int ma = -1e9,mi = 1e9;
    for(int i=1;i<=n;i++) 
    {
        scanf("%d",&a[i]);
        ma = max(a[i],ma);
        mi = min(mi,a[i]);
    }
    int l = mi,r  = ma;
  //  cout<<l<<" "<<r<<endl;
    //check(65324);
    while(l<r)
    {
        LL mid = (l+r)>>1;
        if(check(mid,ma)) r = mid;
        else l = mid + 1;
    }
    cout<<l<<endl;
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
遗传算法是一种基于生物进化理论的优化方法,在优化问题中广泛应用。扫地机器人路径规划作为一种优化问题,可以利用遗传算法来寻找最优路径。首先,我们需要定义适应度函数,该函数用来评估每条路径的优劣,例如路径长度、避开障碍物的能力等。然后,我们随机生成一组初始路径作为种群,再利用遗传算法的选择、交叉和变异操作来不断优化这些路径,直到达到一定迭代次数或者满足优化条件为止。 以下是一个简单的扫地机器人路径规划的遗传算法优化的MATLAB代码: ```matlab % 遗传算法参数设置 popSize = 50; % 种群大小 maxGen = 100; % 最大迭代次数 pc = 0.8; % 交叉概率 pm = 0.1; % 变异概率 % 初始化种群 population = initPopulation(popSize); for gen = 1:maxGen % 评估种群适应度 fitness = evaluateFitness(population); % 选择操作 selected = selection(population, fitness); % 交叉操作 offsprings = crossover(selected, pc); % 变异操作 offsprings = mutation(offsprings, pm); % 更新种群 population = updatePopulation(population, offsprings); end % 找到最优路径 bestPath = findBestPath(population, fitness); % 输出最优路径 disp(['最优路径为:', num2str(bestPath)]); ``` 以上就是一个基本的遗传算法优化扫地机器人路径规划的MATLAB代码,通过不断迭代和优化,最终可以得到最优的路径规划方案。这种方法可以有效解决扫地机器人在复杂环境中的路径规划问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值