全部评论
100 100 100 10 第一题打牌就是排序后逆着做乘法 第二题字符串最小字典序首字母那个直接枚举每个字母 能做字符串首字母的条件是该字母前面的所有字母全部都在该字母后面出现 第三题直接按position排序 然后lower_bound找到前面和后面的符合距离条件的银行 然后RMQ或者树状数组/线段树处理一下找最大的money就ok了 第四题直接输出0了,没思路😂😂😂
蚂蚁金服实习生内推啦 https://www.nowcoder.com/discuss/156263
安全岗十道问答题。。。。
100 100 100 0 JAVA,前三道题用了50min左右,以为稳了。看到第四道题。。我哭了。。。一点思路都没有。。。
非技术,没收到笔试是凉了?……
有大佬可以给下第二题解吗
你比我多一半 哭了
100 70 20 10不敢做声,前面好多大佬
100 75 90 20估计凉凉
import sys
d = {'(': -1, ')': 1, ' ': 0}
class Node:
def __init__(self, val):
self.val = val
self.left = None
self.right = None
class Main:
def __init__(self):
self.num = 0
def solve(self, s1, s2):
# 检查是否存在可能性
res = 0
for c in s1:
res += d[c]
for c in s2:
res += d[c]
if res != 0:
return 0
self.s1 = s1
self.s2 = s2
self.N = len(s1) + len(s2)
root = Node('')
self.buildTree(root, 0, 0)
self.count(root)
return self.num
def buildTree(self, root, i, j):
if i < len(self.s1):
left = root.val + self.s1[i]
if check(left):
root.left = Node(left)
self.buildTree(root.left, i + 1, j)
if j < len(self.s2):
right = root.val + self.s2[j]
if check(right):
root.right = Node(right)
self.buildTree(root.right, i, j + 1)
def count(self, root):
if root.left != None:
self.count(root.left)
if root.right != None:
self.count(root.right)
if len(root.val) == self.N:
self.num += 1
def check(s):
res = 0
for c in s:
res += d[c]
if res > 0:
return False
return True
if __name__ == '__main__':
s1 = sys.stdin.readline().strip()
s2 = sys.stdin.readline().strip()
sol = Main()
print(sol.solve(s1, s2))
第四题,大佬见笑
大佬这是后端?
100 100 90 20
你们哪里进入笔试的 (我只看到笔试日历 报名参加 然后没了www
100 90(超时) 95(超时) 0 。 多少能过?
100 80 100 20凉了
有大佬给看下题目么,菜鸡都没有机会答题,┭┮﹏┭┮
100 100 25 20跪了😢
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); // 银行的数量
int d = sc.nextInt(); // 约定的距离
int[] num = new int[100000000];
int minA = Integer.MAX_VALUE; // 坐标最小值
int maxA = 0; // 坐标最大值
for (int i = 0; i < n; i++) {
int a = sc.nextInt();
int b = sc.nextInt();
num[a] = b; // 在a位置有b金额
maxA = Math.max(a, maxA);
minA = Math.min(a, minA);
}
// 算法主题部分
int postMax = 0;
int globalMax = 0;
for (int i = minA; i < maxA - d + 1; i++) {
if (num[i] > postMax) {
postMax = num[i];
}
if (num[i+d] != 0) {
int tempMax = postMax + num[i + d];
if (tempMax > globalMax) {
globalMax = tempMax;
}
}
}
System.out.println(globalMax);
}大致思想就是滑动窗口,边界等细节方面可能需要微调。为了方便数组开这么大,没在牛客打过题,不知道数组开这么大会不会爆掉。
为啥我的题和你们不一样
100 100 100 20
相关推荐
06-05 17:53
华东理工大学 硬件开发 
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 评论 收藏
分享