第一题思路:(测试全通过)题目条件是每次从1到x每个盘子吃去1个烧饼,假设在s[0]到s[x-1]当中,s[x-1]最小,那么这个范围能吃s[x-1]遍,直至把它吃完,再从左边选一个新的x。也就是说,靠右侧的较小值限定了在其左侧盘子中同时能吃到烧饼的数量。所以我们可以从0开始遍历,每次更新访问过的最小值,用作限定在这个盘子最终能吃到的最大值。讲的可能不太清楚,这里给个伪码吧。 long cnt = s[0]; long tmpMin = s[0]; for (long i = 1; i < N; ++i) { tmpMin = Math.min(tmpMin, s[i]); cnt += tmpMin; } System.out.println(cnt);
点赞 2

相关推荐

喜欢喜欢喜欢:这是我见过最长最臭的简历
点赞 评论 收藏
分享
刘湘_passion:太强了牛肉哥有被激励到
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务