题解 | 注意力调度问题

注意力调度问题

https://www.nowcoder.com/practice/ac0ce181f5474367a08dc85d1341dc80

import sys
import numpy as np
data = list(map(int,sys.stdin.read().strip().split()))
n,d = data[:2]
X = np.array(list(map(float,data[2:2+n*d]))).reshape(n,d)
#print(X)
C = np.zeros(n)
C = np.array(list(map(int,data[-n:])))
#print(C)
import math

rms = np.sqrt((np.sum(X**2,axis=1))/d)
rms = rms[:,np.newaxis]
X = X / rms

A = np.zeros((n,n))
for j in range(n):
    for i in range(j):
        # 计算 a(i,j)   
        A[i,j] = X[i] @ X[j] / math.sqrt(d)
        A[i,j] = A[i,j] **2
# for  遍历所有的 r[i], sort ,选择c_j 个
S = 0
for j in range(n):

    contribution = []
    for i in range(j):
        contribution.append(A[i,j])
    contribution.sort(reverse=True)
    select_sum = sum(contribution[:min(C[j],len(contribution))])
    S += select_sum
S = round(S*100)
print(S)

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务