4.24腾讯技术研究类笔试题
第一题:没看懂
第二题:SENet Attention 思路:模拟 Ac
c = int(input()) f = list(map(float, input().split())) matrix = [] for i in range(2, c + 2): temp = list(map(float, input().split())) matrix.append(temp) def getMaxAttention(matrix, f): attention = [] for i in range(len(matrix)): temp = 0 for j in range(len(matrix[0])): temp += matrix[i][j] * f[j] attention.append(temp) return attention.index(max(attention)) print(getMaxAttention(matrix, f))
第三题:求方程近似解, 思路:二分,但我只过了50%超时了,不知道为啥,pypy也是
import math q = int(input()) for _ in range(q): a, b, c = list(map(int, input().split())) low, high = 0, 2001 while True: mid = (low + high) / 2 if abs(mid**3 + a * mid**2 + b * mid - c) < 1e-8: print(mid) break if mid**3 + a * mid**2 + b * mid - c > 0: high = mid if mid**3 + a * mid**2 + b * mid - c < 0: low = mid第四题:区间数蓝红, 思路:二分 AC
n, m = list(map(int, input().split())) red = list(map(int, input().split())) blue = list(map(int, input().split())) red.sort() blue.sort() q = int(input()) def search(l, r, nums): if r < nums[0]: return 0 low, high = 0, len(nums) first, last = 0, 0 if l < nums[0]: first = 0 else: while low < high: mid = (low + high) // 2 if nums[mid] == l: first = mid break elif nums[mid] > l: high = mid elif nums[mid] < l: low = mid + 1 else: first = low if r > nums[-1]: last = len(nums) - 1 else: low, high = 0, len(nums) while low < high: mid = low + (high - low + 1) // 2 if nums[mid] == r: last = mid break elif nums[mid] > r: high = mid - 1 elif nums[mid] < r: low = mid else: last = low return last - first + 1 res1, res2, res3 = 0, 0, 0 for _ in range(q): l, r = list(map(int, input().split())) red_l = search(l, r, red) blue_l = search(l, r, blue) if red_l > blue_l: res1 += 1 elif red_l == blue_l: res2 += 1 else: res3 += 1 print(res1, res2, res3)第五题:没时间