第一题 矩阵相乘
python暴力只过38%,然后用numpy过了,狗头保命。
import numpy as np def main(): m, k, n = [int(_) for _ in input().split()] A, B = [], [] for i in range(m): A.append([int(_) for _ in input().split()]) for i in range(k): B.append([int(_) for _ in input().split()]) A = np.asarray(A) B = np.asarray(B) # for i in range(m): # for j in range(n): # temp = sum([A[i][t] * B[t][j] for t in range(k)]) # print(temp, end=' ') # print() C = np.dot(A, B) for i in range(m): for j in range(n): print(C[i][j], end=' ') print() if __name__ == '__main__': main()
第二题 盒子打包
找最最多相同大小盒子的数量即可
思路,为什么是求众数呢,设众数为x,那么小于x的盒子必然可以被放在某一个大小为x的盒子内(可以间接嵌套),大于x的盒子必然可以包含某一个大小为x的盒子(同样可以间接嵌套),而当大小相同时必然处于不同的打包中。
from collections import Counter def main(): n = int(input()) nums = [int(_) for _ in input().split()] counter = Counter(nums) ans = 0 for x, p in counter.items(): ans = max(ans, p) return ans if __name__ == '__main__': print(main())
全部评论
(15) 回帖