AcWing 730. 机器人跳跃问题 解题思路及代码

先贴个题目:

以及原题链接: 730. 机器人跳跃问题 - AcWing题库icon-default.png?t=N7T8https://www.acwing.com/problem/content/732/

先说说思路,第一眼看上去像是什么之前写过几次(没写出来,也没看题解) 的什么类似子数列合为零啊之类的题目,结果仔细看看还是有区别的,至于二分说实在话一开始想不出来咋二分,然后暴力超时了,就明白二分找答案了。找一个最小的数当线段起点,找一个合适的数做线段终点,这题基本可以说是写完了(大概),那一看最小能量0嘛,最大?数列中的最大数最为能量肯定能过,毕竟全是正的对吧。然后我就开始码代码了

如下:

#include <iostream>
#include <cstring>
using namespace std;
int main()
{
    int n;
    long long min = 0, max = -1, mid;
    cin >> n;
    int *a = new int[n + 10];
    for (int i = 0; i < n; ++i)
    {
        scanf("%d", &a[i]);
        if (a[i] > max)
            max = a[i];
    }
    while (max > min)
    {
        int sign = 1;
        mid = (max + min) / 2;
        long long e = mid;
        for (int i = 0; i < n; ++i)
        {
            e -= (a[i] - e);
            e %= (long long)1e10;
            if (e < 0)
            {
                sign = 0;
                break;
            }
        }
        if (sign)
            max = mid;
        else
            min = mid + 1;
    }
    cout << min;
    return 0;
}

看着挺短的对不对,其实也不难,说几个注意点,刚开始看这个题目觉得不会爆数据,然后样例过了,一交,爆了,开longlong,emmm。。。。又爆了!罪魁祸首其实就是他的逻辑,当你能量值比较大的时候,你每次基本都是在做乘2的运算,而最大数据有10的五次方,也就是说你的数字大小可能是2的10的五次方这个数量级的!!!这开longlonglonglong都没用。没办法了,我想了半天,最后整了个暴力方法:

e %= (long long)1e10

我直接不让你超过10位,ok问题解决,皆大欢喜。

PS:讲个题外话,这题算是我1月30的刷题,那为啥我这个点还在苦逼的写题解呢?因为我这个(龙门脏话)看错答案了,其中longlong 爆了的一组数据答案是53,我看成51了,然后我自己做的时候又一直没发现,这本来是我昨晚11点打算做完就睡的题,确实40分就做完了,结果因为答案和标答老差2百思不得其解,甚至重写了一边代码,最后手算才发现我记得的答案有问题,回原网站看了一眼,浪费了我两个小时。。。。什么?你问才浪费两小时为什么4点才发,emmm我发现之后破大方缓了一会儿吃了个夜宵回来写的,顺带一提,我的夜宵是火鸡面加炸鸡,真的香大伙们。继续写题解去了。

by————2024.1.30刷题记录

  • 7
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
机器人的控制和编程技术是机器人应用的核心技术之一,它直接决定了机器人的智能化程度和任务执行能力。下面我们将对机器人的控制和编程技术做一个简要介绍。 1. 机器人的控制技术 机器人的控制技术包括机器人的运动控制、路径规划、避障等技术。机器人的运动控制是指对机器人的关节或执行器进行精确的控制,以实现机器人的运动和姿态控制。路径规划是指根据机器人的任务需求和环境信息,自主规划机器人的运动路径。避障是指机器人在执行任务时,能够自主避开障碍物,并重新规划路径,以保证任务的完成。 机器人的控制技术通常采用PID控制、模糊控制、遗传算法等方法进行控制和优化。 2. 机器人的编程技术 机器人的编程技术包括机器人的程序设计、控制算法设计、硬件接口设计等。机器人的程序设计是指编写机器人的运动控制算法和任务控制程序,以实现机器人的自主控制和任务执行。控制算法设计是指针对机器人的不同应用场景,设计相应的控制算法,例如路径规划算法、避障算法等。硬件接口设计是指设计机器人的硬件接口,例如传感器接口、执行器接口等。 机器人的编程技术通常采用C/C++、Python等编程语言进行编程,同时也需要掌握机器人操作系统、机器人控制器等相关技术。 总之,机器人的控制和编程技术是机器人应用的核心技术之一,它直接决定了机器人的智能化程度和任务执行能力。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值