- 博客(9)
- 收藏
- 关注
原创 树状数组基础
即对3、3+lowbit(3)=4、4+lowbit(4)=8…从3开始去找接下来的t是进行加等于lowbit操作,直到范围超过n。如给a[3]加上x,对应tree数组要修改的有t[3]、t[4]、t[8]、t[16]…一种位运算操作,用于计算出数字的二进制表达中的最低位的1以及后面所有的0。代码原理是利用计算机存储特性,不用深究原理,只需记住代码。相应的减等于lowbit并求和,直到减到0为止,可以先建立树状数组在画图理解。即对与i其管辖的区间(即区间和的范围)为。树状数组用来存储一段区间的和,例如。
2024-07-29 16:49:10
148
原创 状态压缩dp
状态压缩就是使用某种方法来表示某种状态,通常是用一串01数字(二进制数)来表示各个状态。这就要求使用状态压缩的对象的状态必须只有两种,0或1;当然如果有三种状态用三进制来表示也未尝不可。1.通常用dp数组来存所有状态,所有状态用二进制表示,dp数组开大小为dp[(1<<n)-1]。2.初始化dp数组,同时将输入数据,初始化每一层对应的状态数组。3.枚举每一层状态,同时枚举所有状态,并找到相应的状态转移方程。[蓝桥杯 2019 省 A] 糖果题解:先开dp数组用来表示所有状态对应的购买数量,并开数组用来
2024-07-23 00:22:39
235
原创 算法思想-离散化
离散化(Discretization)是一种数据处理技术,用于将连续的数据(如实数或非常大的整数)映射到有限的离散值域中,从而提高算法的时空效率。例如原数组的范围是[1,1e9],而数组大小仅为1e5,那么说明元素值的“种类数”最多也就1e5种,从而可以利用一个数组(即离散化数组)来表示某个元素值的排名(即第几小)现值域的压缩,将原数组的元素值作为下标来处理。离散化的核心思想是将原数组中的元素值映射到一个较小的离散值域中,使得原数组的元素值能够作为下标来处理。
2024-07-21 22:16:45
170
原创 一分钟带你了解typedef及typedef struct和struct的区别
首先来了解typedef的含义:在C++中,typedef是一种用于为已存在的类型创建别名的机制。通过typedef,可以为现有的类型定义一个新的名称,使得代码更易读且具有更好的可维护性。其中,existing_type是已有类型的名称,new_name是为该类型定义的新名称。
2024-04-28 16:04:17
490
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人