- 博客(3)
- 收藏
- 关注
原创 数状数组1
6.通过5.我们学会了如何通过树状数组求任意的前n项和,那么对于我们的第二问求(x,y)的区间和只需要求出前y项的和,再求出前x-1项的和(如何不懂为什么是x-1项的和可以参考我的第一篇文章前缀和)4.再进一步发现每一个节点的父节点就是t[x+lowbit(x)],所以我们可以完成题目的第一问,给需要加的数x加上k,这里我们给第x个数加了k,所以需要更新后面的每个t[x]3.我们会发现每一层的末尾的零的个数都是相同的,且t[x]节点覆盖的长度就是lowbit(x)二进制取反:将每一位变成相反的;
2024-04-23 18:03:10 292 1
原创 寻找最低数
我们发现对于本题要求转化后的十进制数,实际就是找到第一个非零数的位置j,然后取2的j次方。1.十进制转化为二进制,这里我们的方法是连续除以2取余,本题不需要补0;开始分析之前希望大家可以认真的看一下题。2.将第一个非零的数转化回十进制;
2024-04-18 17:00:43 131 2
原创 一维前缀和
第一篇博客,聊聊第一个学会的基础算法---前缀和先来看一道题input第一行输入n,m。接下来一行n个数字,第i个数字为ai。接下来m行,每行一个询问,输入x,y,z。output对于每一行询问,若x=1,输出ay到az的和。看到这题的时候不知道大家的想法的是不是直接定义俩个数组,一个存放数据,另一个当输入的x=1时,让存放数据的数组的第y项到z项依次加给这个数组,最后就得出了结果。可这样的方法过于复杂,会在运行时超时。
2024-04-18 08:55:58 319 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人