1. 问题描述:

小朋友排成一排,老师给他们分苹果。

小朋友从左到右标号1..N。有M个老师,每次第i个老师会给第Li个到第Ri个,一共Ri-Li+1个小朋友每人发Ci个苹果。

最后老师想知道每个小朋友有多少苹果。

数据规模和约定

100%的数据,N、M≤100  000,1≤Li≤Ri≤N,0≤Ci≤100。

输入

第一行两个整数N、M,表示小朋友个数和老师个数。

接下来M行,每行三个整数Li、Ri、Ci,意义如题目表述。

输出

一行N个数,第i个数表示第i个小朋友手上的水果。

样例输入

5 3

1 2 1

2 3 2

2 5 3

样例输出

1 6 5 3 3

2. 思路分析:

① 分析题目可以知道这道题目其实是一个区间上点的的频次问题,弄清楚考察的点之后我们可以想到使用差分数组的思路来实现,首先我们需要处理输入数据的问题,将输入的数据放到对应的变量中,因为使用的是python语言,所以可以声明一个名为fre的List[int]列表(与java或者是c++的数组是类似的)来记录当前位置出现频次,这里累加的频次不是1,而是题目中给出的当前小朋友的苹果数量,核心处理的是fre列表:我们需要在当前区间起点的位置累加上c[i],在当前区间终点的下一个位置减去c[i],这样最后我们对fre列表的当前位置累加上前一个位置的值表示的是当前位置能够分到的苹果的数目了

② 这道题目与力扣中的1589 所有排列中的最大和的题目本质上是类似的,力扣中的累加的次数是1,这里累加的是c[i], 两道题目在细节的处理有点不同,但是可以对照着理解

3. 代码如下:

import sys

from typing import List

class Solution:

def solve(self, N: int, M: int, Li: List[int], Ri: List[int], Ci: List[int]):

fre = [0] * (N + 2)

for i in range(M):

fre[Li[i]] += Ci[i]

fre[Ri[i] + 1] -= Ci[i]

fre.pop()

for i in range(1, N + 1):

fre[i] += fre[i - 1]

fre.pop(0)

return fre

if __name__ == '__main__':

# 5 3

# 1 2 1

# 2 3 2

# 2 5 3

# 一行读入若干个数字

N, M = map(int, sys.stdin.readline().split())

Li, Ri, Ci = list(), list(), list()

for i in range(M):

a, b, c = map(int, sys.stdin.readline().split())

Li.append(a)

Ri.append(b)

Ci.append(c)

# print(M, N)

# print(Li, Ri, Ci)

res = Solution().solve(N, M, Li, Ri, Ci)

for i in res:

print(i, end=" ")

原文链接:https://blog.csdn.net/qq_39445165/article/details/108913473

python分苹果问题_蓝桥杯--算法提高--VIP--分苹果题目(差分数组)相关推荐

  1. [蓝桥杯][算法提高VIP]分苹果(差分||树状数组)

    题目描述 小朋友排成一排,老师给他们分苹果. 小朋友从左到右标号1-N.有M个老师,每次第i个老师会给第Li个到第Ri个,一共Ri-Li+1个小朋友每人发Ci个苹果. 最后老师想知道每个小朋友有多少苹 ...

  2. 蓝桥杯 - [算法提高VIP]分苹果(差分数组)

    题目链接:http://lx.lanqiao.cn/problem.page?gpid=T345 时间限制:1.0s 内存限制:256.0MB 问题描述 小朋友排成一排,老师给他们分苹果. 小朋友从左 ...

  3. [蓝桥杯][算法提高VIP]夺宝奇兵-递推+记忆化搜索

    题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 " ...

  4. [蓝桥杯][算法提高VIP]夺宝奇兵-dp

    题目描述 在一座山上,有很多很多珠宝,它们散落在山底通往山顶的每条道路上,不同道路上的珠宝的数目也各不相同.下图为一张藏宝地图: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 " ...

  5. [蓝桥杯][算法提高VIP]阮小二买彩票

    [蓝桥杯][算法提高VIP]阮小二买彩票 题目描述 在同学们的帮助下,阮小二是变的越来越懒了, 连算账都不愿意自己亲自动手了,每天的工作就是坐在电脑前看自己的银行账户的钱是否有变多.可是一段时间观察下 ...

  6. c语言oj题1923偶数之和,问题 1923: [蓝桥杯][算法提高VIP]学霸的迷宫 (BFS)

    题目描述 学霸抢走了大家的作业,班长为了帮同学们找回作业,决定去找学霸决斗.但学霸为了不要别人打扰,住在一个城堡里,城堡外面是一个二维的格子迷宫,要进城堡必须得先通过迷宫.因为班长还有妹子要陪,磨刀不 ...

  7. [蓝桥杯][算法提高VIP]阮小二买彩票[递归全排列]

    题目 1578: [蓝桥杯][算法提高VIP]阮小二买彩票 时间限制: 1Sec 内存限制: 128MB 提交: 348 解决: 153 题目描述 在同学们的帮助下,阮小二是变的越来越懒了, 连算账都 ...

  8. Java语言strcmp函数用法_蓝桥杯 算法提高 11-1实现strcmp函数 (JAVA方法)

    蓝桥杯 算法提高 11-1实现strcmp函数 (JAVA方法) 首先这不是一个多难的题,但是网上的我没怎么找到有Java的代码,基本全都是c语言的,小编是个小白,如果有不对的地方请联系小编 问题描述 ...

  9. [蓝桥杯][算法提高][vip] 阮小二买彩票

    蓝桥杯 ADV-66 算法提高 阮小二买彩票 问题描述 在同学们的帮助下,阮小二是变的越来越懒了,连算账都不愿意自己亲自动手了,每天的工作就是坐在电脑前看自己的银行账户的钱是否有变多.可是一段时间观察 ...

最新文章

  1. [20170419]bbed探究数据块.txt
  2. 局部钩子能防全局钩子吗_阿特的钩子成为队友的噩梦,毫无游戏体验感,小夏:当场哭了出来...
  3. SAP C4C 和 ERP 中的外部定价模块 - External Pricing原理介绍
  4. 微信群运营之设计运营思路
  5. swoole之代码热更新实现
  6. HTML基础知识点(2)——常用标签
  7. 计算机平面设计论文范,计算机平面设计论文关于计算机平面设计中汉字艺术论文范文参考资料...
  8. R语言聚类算法之系谱聚类(Hierarchical Method)
  9. Maven 配置使用小技巧
  10. 复制百度文库内容方法
  11. MyEclipse暗黑主题设置
  12. 别再用QQ的破数字邮箱了,你其实还有注册姓名全拼微软邮箱的机会
  13. java怎么加锁_JAVA多线程(3)——如何加锁
  14. 水果超市配送小程序的功能
  15. 两台电脑用网线直连传文件
  16. mfc函数---CFileDialog的用法
  17. Linux 磁盘I/O是怎么工作的
  18. 在Android手机上搭建自己的的服务器——云盘实例
  19. win7系统64位系统怎么计算机配置,Win7系统电脑最低配置要求是什么?
  20. HTML 获取屏幕、浏览器、页面的高度宽度

热门文章

  1. [含文档+源码等]微信小程序校园生活小助手+后台管理系统前后分离VUE[包运行成功]
  2. LED亮5秒灭5秒C语言程序代码,单片机【木仓示申吧】_百度贴吧
  3. TXT文本大数据手机号码归属地批量归类查询处理工具
  4. 狂热与幻想:草根财团、山寨交易所、传销社群和币圈自媒体
  5. 八边形类 Octagon
  6. 在单面打印机上使用WPS实现手工双面打印
  7. uni-app—使用vscode创建小程序项目(图文)
  8. jmeter 报405错误_get请求400错误,post请求405错误
  9. 流?I/O操作?阻塞?epoll?
  10. 平安科技移动开发二队技术周报(第十期)