ACM训练日记—8月21日

本文探讨了树状数组作为一种高效的数据结构,在处理特定类型问题时的应用。通过实例讲解了如何结合动态规划解决子序列问题,并大幅降低时间复杂度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

         今天还是以看树状数组的博客,感觉好几篇比较难,看的比较慢。另外还试着独立写了几道水题练习,还是比较菜。

         以下是我自己的理解:树状数组是一种主要就是为了节省时间降低复杂度的工具,它既可以快速算出前i项的和,也可以快速算出某区间段满足条件的元素个数,同时可以实现随着元素的改变而改变。

         今天水的其中一题,给一个一维数组A[],找出满足条件的子列,a<b<c<d,且Aa<Ab,Ac<Ad。这道题如果用暴力解法要是绝对超时的。而这道题就是dp+树状数组,遍历整个数组a[n],令a[i]为c,找出c右边有多少比a[i]大的,找出a[i]左有多少Aa<Ab的情况,相乘,最后全部累加就是ac了,这时树状数组可以作为记录a[i]分别左有多少比a[i]小的数组。可省大量时间。

         至今我所看到的题树状数组都是以一种辅助工具出现的,往往是什么什么+树状数组的形式。

         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值