百度笔试

踏前斩怎么做
全部评论
用贪心,二三题测试用例都能过,但是提交通过都是0,感觉二三题就算说解法有漏洞,0也不可能啊……是系统问题还是官方故意设置的
2 回复 分享
发布于 2022-09-13 21:28 湖北
先统计所有血量count,从后往前,贪心思想,能减一个[1,2,3]序列就减一个这个序列,每减一个count减1,最后输出count
点赞 回复 分享
发布于 2022-09-13 22:03 上海
没看 去做微众了 结果微众没做出来 想死
点赞 回复 分享
发布于 2022-09-13 21:35 江西
可不可以把每个位置能踏前斩的次数统计出来,然后找最大值,优先用这个最大值,这个位置能踏前斩的次数就变为0。再更新左右的能踏前斩次数,再找最大值,直到所有位置都不能踏前斩了。
点赞 回复 分享
发布于 2022-09-13 22:03 江苏
        int[] a = new int[n];         long res = 0l;         for(int i = 0; i < n; i++) {             a[i] = in.nextInt();             res += a[i];         }         for(int i = n-1; i >= 2; i--) {             if(a[i] >= 3) {                 int t1 = a[i-2];                 int t2 = Math.min(t1, a[i-1]/2);                 int t3 = Math.min(t2, a[i]/3);                 res -= t3;                 a[i] -= t3*3;                 a[i-1] -= t3*2;                 a[i-2] -= t3;             }         }         System.out.println(res);
点赞 回复 分享
发布于 2022-09-13 21:36 北京
从后往前遍历一遍就行了
点赞 回复 分享
发布于 2022-09-13 21:32 安徽
public static long solution(int n, int[] nums) {         long sum=0;         if(n<=2){             for(int num:nums){                 sum+=num;             }             return sum;         }         int res=0;         // 每次选择差值最大的进行踏前斩 Math.max(nums[i]+nums[i+1]+nums[i+2]-6)         while(res!=n-2){             res=0;             int index=-1;             long max=0;             for(int i=0;i<=n-3;i++){                 if(nums[i]>=1&&nums[i+1]>=2&&nums[i+2]>=3){                     int diff=nums[i]+nums[i+1]+nums[i+2]-6;                     if(diff>=max){                         index=i;                         max=diff;                     }                 }else{                     res++;                 }             }             if(index!=-1){                 sum+=5;                 nums[index]-=1;                 nums[index+1]-=2;                 nums[index+2]-=3;             }         }         for(int num:nums) sum+=Math.max(0,num); //普通攻击                  return sum;     }
点赞 回复 分享
发布于 2022-09-13 21:39 北京
回溯过了5%
2 回复 分享
发布于 2022-09-13 21:30 湖南
什么岗啊,题不太一样
点赞 回复 分享
发布于 2022-09-13 21:44 四川
同问,有解了踢我
点赞 回复 分享
发布于 2022-09-13 21:40 重庆

相关推荐

01-28 16:12
中南大学 Java
几年前还没有chatgpt的时候,刷题真的是很痛苦。刷不出来只能看题解,题解有几个问题:第一个是每次看的写题解的人都不一样,很难有一个统一的思路;第二个也是最重要的是,题解只提供了作者自己的思路,但是没有办法告诉你你的思路哪里错了。其实很少有错误的思路,我只是需要被引导到正确的思路上面去。所以传统题解学习起来非常困难,每次做不出来难受,找题解更难受。但是现在chatgpt能做很多!它可以这样帮助你&nbsp;-1.&nbsp;可以直接按照你喜欢的语言生成各种解法的题解和分析复杂度。2.&nbsp;把题和你写的代码都发给它,它可以告诉你&nbsp;你的思路到底哪里有问题。有时候我发现我和题解非常接近,只是有一点点🤏想错了。只要改这一点点就是最优解。信心倍增。3.&nbsp;如果遇到不懂的题解可以一行一行询问为什么要这样写,chatgpt不会嫌你烦。有时候我觉得自己的range写错了,其实那样写也没错,只是chat老师的题解有一点优化,这个它都会讲清楚。4.&nbsp;它可以帮你找可以用同类型解法来做的题。然后它可以保持解法思路不变,用一个思路爽刷一个类型的题。如果题目之间思路又有变化,它会告诉你只有哪里变了,其他的地方还是老思路。5.&nbsp;它也可以直接帮你总结模板,易错点。经过chat老师的指导,我最大的改变是敢刷题了。之前刷题需要先找某一个人写的算法题repo,然后跟着某一个人他的思路刷他给的几个题。如果想写别的题,套用思路失败了,没有他的题解,也不知道到底哪里错了;看别人的题解,思路又乱了。这个问题在二分查找和dp类型的题里面特别常见。但是现在有chat老师,他会针对我的代码告诉我我哪里想错了,应该怎么做;还按照我写代码的习惯帮我总结了一套属于我的刷题模板。每天写题全是正反馈!
牛客981:不刷才是爽
AI时代的工作 VS 传...
点赞 评论 收藏
分享
2025-12-15 12:50
河北工程大学
sta666:我也是这个国际商业化的,三天,一天一面,就通过了,不过我是后端实习生,好好面感觉能过。
点赞 评论 收藏
分享
评论
1
5
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务