全部评论
有朋友能分享一下 1、3两道题 的 笔经吗
有兄弟能说说第一题的思路吗?蛮好奇该咋做的
有点难 第三题卡我DP的维度 可能我比较菜没法优化空间吧。。。 只过了百分之90 有差不多的带佬吗? 求个正解
只A了第二题,这题真难🙄
投4票的大哥是认真的么😂
笔试已经结束,a了的大佬,求1,3,4答案
太菜了第一题题没看懂,求个大佬分享思路,第二题不知道是哪种情况没考虑到只有90%,第三dp不知道咋搞,蹲一个大佬。
第三题贴一个自己的思路,这是交卷后想到的,也不知道能否AC 思路:两个单调栈,先得到一个单调递减栈, 后得到一个单调递增栈,函数图像相当于一个V字形 步骤一:两个栈都不为空,则递增栈的最大,匹配递减栈的最小,循环直到一个栈为空 步骤二:递减栈为空,递增栈不为空,则递增栈最大值匹配最小值,循环操作直到栈空或者只剩一个元素,把这个元素接到递减栈后面去 import sys n = int(input()) num = list(map(int, sys.stdin.readline().strip().split())) s1 = [float("inf")] s2 = [float("-inf")] idx, res = 0, 0 while idx < n: while idx < n and num[idx] <= s1[-1]: s1.append(num[idx]) idx += 1 while idx < n and num[idx] >= s2[-1]: s2.append(num[idx]) idx += 1 while len(s1) > 1 and len(s2) > 1 and s2[-1] > s1[-1]: print(s2[-1], s1[-1]) res += s2[-1] - s1[-1] s2.pop() s1.pop() while len(s2) >= 3: res += s2[-1] - s2[1] s2.pop() s2.pop(1) s1 += s2[1:] s2 = [float("-inf")] print(res)
相关推荐