classSolution: defrowAndMaximumOnes(self, mat: List[List[int]]) -> List[int]: l = [0] * len(mat) for idx, line inenumerate(mat): for v in line: if v == 1: l[idx] += 1 mxl = max(l) for idx, line inenumerate(l): if mxl == line: return [idx, line]
classSolution: defmaxDivScore(self, nums: List[int], divisors: List[int]) -> int: s = [ sum(1if j % i==0else0for j in nums)\ for i in divisors ] mxl = max(s) cnt = [] for i inrange(len(divisors)): if mxl == s[i]: cnt.append(divisors[i]) returnmin(cnt)
cnt = [0] * (n + 1) p = [[]for i inrange(n+1)] # 建树 for a,b in edges: p[a].append(b) p[b].append(a)
# 树上存在唯一路径,因此统计访问次数
for a,b in trips: defsp(now,lst): if now == b: cnt[now] += 1 returnTrue for i in p[now]: if lst == i: continue if sp(i,now): cnt[now] += 1 returnTrue sp(a,-1)
defdfs(now, lst): pri = price[now] * cnt[now] hv_pri = pri // 2 for i in p[now]: if lst == i: continue nxt_ful, nxt_hav = dfs(i, now) pri += min(nxt_ful, nxt_hav) hv_pri += nxt_ful return pri, hv_pri returnmin(dfs(0,-1))