蓝桥杯差分序列-分苹果-PYTHON-数据结构

题目描述

解题思路 

按照暴力解题思想,对于分苹果,也就是把Li到Ri就添加Ci个就行,一直遍历就行。但是这样分很多人的时候就容易超时。我们就要想到另一种方法差分序列。

差分序列

差分序列也就是一个原始序列,一个记录增加的序列。其中原始序列记为A,记录增加的序列为B。初始状态下A=B,B[i]总满足条件B[i]=A[i]-A[i-1],B[0]==0所以B[1]=A[1]。所以说B是一个记录A数组前后变化的数组。比如说当我要给Li到Ri的同学分Ci个苹果时我只需要让B[Li]+=ci然后让B[Ri+1]-=ci。这样A的Li到Ri就加了ci。

代码

    student,teacher=map(int,input().strip().split())
    A=[0]*(student+1)#第0个不参与运算
    for i in range(teacher):
        Li,Ri,Ci=map(int,input().strip().split())
        A[Li]+=Ci
        if Ri<student:
            A[Ri+1]-=Ci
    for i in range(1,student+1):
        A[i]=A[i]+A[i-1]
        print(A[i],end=' ')

输出的时候就让递增序列一直增加就好了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值