csp202006-2 稀疏向量 python 满分

csp202006-2

ans =list(map(int,input().split()))
n,a,b=ans[0],ans[1],ans[2]
u={}
result=0
import sys
for line in sys.stdin.readlines():
    index,value = map(int,line.strip('/n').split())
    if a>0 :
        u[index]=value
        a-=1
    else:
        if index in u:
            result+=u[index]*value
print(result)

核心问题是读取,因为a,b数据量都很大,所以input不能用,如果使用std标准输入,则需要注意它读取的每一行都是包括换行符

上述代码的读取可以一次性读取,转列表,这样做耗时更少,空间要大一些

使用list实现的代码只有六十分,不知道为什么,个人感觉是因为如果使用list

ans =list(map(int,input().split()))
n,a,b=ans[0],ans[1],ans[2]
u=[0]*n
result=0
import sys
for line in sys.stdin.readlines():
    index,value = map(int,line.strip('/n').split())
    if a>0 :
        u[index-1]=value
        a-=1
    else:
        if u[index-1]!=0:
            result+=u[index-1]*value
print(result)

如果使用list,list找序号需要时间,是主要出错地方

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值