雷火笔试难过的记录
1. ac
def area(rect): return rect[0] * rect[1] def func(rect): return min(rect[0]/rect[1], rect[1]/rect[0]) if __name__ == "__main__": N = int(input()) rects = list(map(lambda x: int(x), input().split(' '))) width = rects[0::2] height = rects[1::2] rects = list(zip(width, height)) *** = {} for r in rects: ar = area(r) if ar not in ***: ***[ar] = [] ***[ar].append(r) for k, v in ***.items(): _ = list() tmp = {} for x in ***[k]: if func(x) not in tmp: tmp[func(x)] = [] tmp[func(x)].append(x) for tk, tv in tmp.items(): tmp[tk] = sorted(tv, key=lambda x: x[0]) tmp_keys = list(tmp.keys()) tmp_keys.sort(reverse=True) for t in tmp_keys: for p in tmp[t]: _.append(p) ***[k] = _ res = [] ***_keys = list(***.keys()) ***_keys.sort() for ak in ***_keys: res.extend(***[ak]) __ = [] for z in res: __.append(str(z[0])) __.append(str(z[1])) res_str =' '.join(__) print(res_str)
2. 没加括号导致的不通过,伤心啊
if __name__ == "__main__": result = [] while True: try: x, y = map(lambda x: int(x), input().split(' ')) except: break else: max_axi = max(abs(x), abs(y)) last_max = ((max_axi-1)*2 + 1)**2-1 if x >= 0 and y > 0: last_max += (max_axi << 1) - x + y elif x < 0 and y >= 0: last_max += (max_axi << 2) + abs(x) - y elif x <= 0 and y < 0: last_max += max_axi*6 -y +x elif x > 0 and y < 0: if abs(x) <= abs(y): last_max += max_axi * 7 + x else: last_max += max_axi + y result.append(last_max) for r in result: print(r)
4. 背包问题, 题目理解错误,以为输入是x0,x1,x2,y0,y1,y2,z0,z1,z2这样的顺序, 结果实际是x0,y0,z0,x1,y1,z1,x2,y2,z2,太难受了,两个小时咋调都不过,结果结束了发现了问题
if __name__ == "__main__": N, H = list(map(lambda x: int(x), input().split(" "))) _ = list(map(lambda x: int(x), input().split(" "))) Xi = _[0::3] Yi = _[1::3] Zi = _[2::3] # 血量不超过H的最大经验 dp = [ [ 0 for j in range(H+1) ] for i in range(N+1) ] res = 0 for i in range(1, 1 + N): for j in range(H+1): a = j + Xi[i-1] b = j + Zi[i-1] if a <= H and b <= H: dp[i][j] = max(dp[i-1][a]+Yi[i-1], dp[i-1][b]) elif a <= H: dp[i][j] = dp[i-1][a]+Yi[i-1] elif b <= H: dp[i][j] = dp[i-1][b] res = max(res, dp[i][j]) print(res)
#笔试题目##网易雷火#