【蓝桥模板】——考试倒计时3天,你和省一就差这最后10分了(差分模板)

这篇具有很好参考价值的文章主要介绍了【蓝桥模板】——考试倒计时3天,你和省一就差这最后10分了(差分模板)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 大家好,我是爱分享的小蓝,欢迎交流指正~ 

蓝桥模板,备战蓝桥,python,蓝桥杯,算法,动态规划,数据结构

全文目录🧭

🎁差分模板

🌲差分-树木上药

🚀传送锚点

 💡思路点拨

🍞代码详解  

 🎄差分-小明的彩灯

🚀传送锚点​

 💡思路点拨

🍞代码详解 


🎁差分模板

差分三部曲=差分相减+转换加减+前缀相加

#差分三部曲

#1.差分相减(差分公式)
for i in range(len(dp)-1,0,-1):
    dp[i]-=dp[i-1]
#2.转换加减(区间加减→端点加减)
    dp[l-1]+=v  
    dp[r]-=v
#3.前缀相加(前缀和公式)
for i in range(1,n):
    dp[i]+=dp[i-1]

'''
dp=[1, 2, 3, 4, 5, 7, 2]+[0]

首先假设有一个数组:

1 2 3 4 5 7 2

差分后:
1 1 1 1 1 2 -5 -2

一般应用场景:
让你对区间 [l,r] 加减操作 N 次

如:
从第二个元素到第五个元素每个+3
从第二个元素到第四个元素每个-2
从第一个元素到第三个元素每个+1
....

这里我们先演示前三个:
对于每个 [l,r] 区间的加减操作都转化为对端点 l,r+1 的操作
从第二个元素到第五个元素每个+3:
转化为:[l]+3 并且 [r+1]-3

那么原序列变成了:
1 1 1 1 1 2 -5 -2
1 4 1 1 1 -1 -5 -2

然后我们按照 a[i]=a[i]+a[i-1] 复原:
1 5 6 7 8 7 2 0

去掉最后一项,跟原序列对比:
1 2 3 4 5 7 2
1 5 6 7 8 7 2
确实是都加上了 3。

我们继续操作:
从第二个元素到第四个元素每个-2
转化为:[l]-2 并且 [r+1]+2

那么序列变成了: 
1 4 1 1 1 -1 -5 -2
1 2 1 1 3 -1 -5 -2

然后我们按照a[i]=a[i]+a[i-1] 复原
1 3 4 5 8 7 2 0

与上次复原后对比:
1 5 6 7 8 7 2
1 3 4 5 8 7 2 


我们最后直接做三次,最后还原:
从第二个元素到第五个元素每个+3
从第二个元素到第四个元素每个-2
从第一个元素到第三个元素每个+1

1 2 3 4 5 7 2

原序列差分后:
2 2 1 0 3 -1 -5 -2

2 号元素 + 3 
6 号元素 - 3
2 号元素 - 2
5 号元素 + 2
1 号元素 + 1 
4 号元素 - 1

差分序列变成:
2 2 1 0 3 -1 -5 -2

复原后:
2 4 5 5 8 7 5 0

与原序列对比:
1 2 3 4 5 7 2
2 4 5 5 8 7 5

'''

参考资料:原理解释 样例解释


🌲差分-树木上药

🚀传送锚点

蓝桥模板,备战蓝桥,python,蓝桥杯,算法,动态规划,数据结构

蓝桥模板,备战蓝桥,python,蓝桥杯,算法,动态规划,数据结构

 💡思路点拨

老规矩,先来一道差集的经典例题「树木上药」,熟悉一下差分三部曲~

1、差分相减:先创建一个dp列表,相隔两个元素相减。因为这道题dp列表初始化都为0,运算之后还是0不变,所以可以跳过第一步不写,写上是为了更好理解。

2、转换加减:区间的加减转换成两个端点的加减,左端点加上权值,右端点减去权值。

3、前缀相加:将第一步的差集用前缀和还原回去,这里用到之前学过的前缀和模板。

🍞代码详解  

#差分-树木打药
n,m=map(int, input().split())
dp=[0]*n

#1.差分相减(差分公式)
#可以跳过不写

#2.转换加减(区间加减→端点加减)
for i in range(m):
    l,r,v= map(int, input().split())
    dp[l-1]+=v  #l的下标是l-1
    dp[r]-=v    #r+1的下标是r

#3.前缀相加(前缀和公式)
for i in range(1,n):
    dp[i]+=dp[i-1]

print(sum(dp))
'''
input:
500 3
150 300 4
100 200 20
470 471 19
print:
2662
'''

 🎄差分-小明的彩灯

🚀传送锚点

蓝桥模板,备战蓝桥,python,蓝桥杯,算法,动态规划,数据结构

 💡思路点拨

接下来,一道差集的简单题「小明的彩灯」,检验一下差分三部曲的掌握情况吧~

1、差分相减:先创建一个dp列表,差分相减直接跳过。

2、转换加减:区间彩灯的亮度加减,转化为两个端点的亮度加减。

3、前缀相加:前缀和还原回去,就完成差分模板了。

🍞代码详解  

#差分-小明的彩灯
n,q=map(int,input().split())
a=list(map(int,input().split()))
dp=[0]*(n+1)
for i in range(q):
    l,r,x=map(int,input().split())
    dp[l-1]+=x
    dp[r]-=x
for i in range(1,n):
    dp[i]+=dp[i-1]
for i in range(n):
    print(max(dp[i]+a[i],0),end=" ")
'''
input:
5 3
2 2 2 1 5
1 3 3
4 5 5
1 1 -100
print:
0 5 5 6 10
'''

  ​​​ 友友们,备战蓝桥最后3天,一起冲刺省赛一等奖!​​​

蓝桥模板,备战蓝桥,python,蓝桥杯,算法,动态规划,数据结构​​文章来源地址https://www.toymoban.com/news/detail-807441.html

到了这里,关于【蓝桥模板】——考试倒计时3天,你和省一就差这最后10分了(差分模板)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 蓝桥杯刷题冲刺 | 倒计时6天

    作者:指针不指南吗 专栏:蓝桥杯倒计时冲刺 🐾马上就要蓝桥杯了,最后的这几天尤为重要,不可懈怠哦🐾 题目 链接: 4941. 凑数 - AcWing题库 初始时,n=0。 每一轮操作都要依次完成两个步骤: 第一步,任选一个 非负 整数 a,将 n 增加 a,这一步所需付出的代价为 a。 第二

    2023年04月08日
    浏览(32)
  • 51单片机实现倒计时,按键控制倒计时

    基于AT89C52的答辩倒计时。四个按键分别控制倒计时开始,暂停,时间加和减。剩下30S时蜂鸣器响,倒计时结束蜂鸣器响。  

    2024年02月07日
    浏览(43)
  • Flutter实现倒计时功能,秒数转时分秒,然后倒计时

    Flutter实现倒计时功能 发布时间:2023/05/12 本文实例为大家分享了Flutter实现倒计时功能的具体代码,供大家参考,具体内容如下 有一个需求,需要在页面进行显示倒计时,倒计时结束后,做相应的逻辑处理。 实现思路:在Flutter中,Timer.periodic提供了循环功能,查看函数定义:

    2024年02月13日
    浏览(38)
  • 51单片机通过计时器实现倒计时

    软件 : Keil5+Proteus7 元件 : AT89C51 * 1,7SEG-MPX2-CA * 1

    2024年02月16日
    浏览(49)
  • 倒计时57天

    3-1知识点续: 5. 6. 复习3-2:习题篇: 倒计时68天-CSDN博客 1. 2. 待续,,,

    2024年02月20日
    浏览(36)
  • 倒计时 天时分秒

    2024年02月07日
    浏览(37)
  • 倒计时动效

    1. 效果 2. html 3. css

    2024年02月11日
    浏览(30)
  • jquery 实现倒计时

    $(\\\".tableText\\\").click(function () {     var time = 60;     var timer = setInterval(function(){         time--;         $(\\\".tableText\\\").text(\\\"(\\\"+time+\\\"秒)重发\\\");         if(time==0){             clearInterval(timer);             $(\\\".tableText\\\").text(\\\"获取验证码\\\");         }     },1000); });

    2024年04月14日
    浏览(37)
  • [Unity]Lua本地时间、倒计时和正计时。

    惯例,直接上代码:

    2024年02月12日
    浏览(37)
  • Verilog设计倒计时秒表

    目录 一.设计要求 二.模块总和 三.模块设计      1.顶层模块      2.分频模块      3.计数模块      4.倒计时模块      5.数码显示模块      6.管脚约束代码 四.引脚分配 五.演示视频 ①.用基于NEXY4 DDR开发板自带的时钟驱动电路,要求计时精确; ②.用开发板上的低 7 个开

    2024年02月05日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包