周末训练笔记
2017-09-03 22:33
239 查看
由于当时家里有点事回家了,树状数组也没大看,本周又学习了一下树状数组。
看树状数组的时候看到起点的时候看课件的时候有点懵逼,当时不明白括号后面的2是什么意思就没管,然后又补了一波原码,反码,补码的知识。
原码:就是直接将十进制数转换为二进制数形式。
反码:正整数原码的反码是其自身,负整数原码的反码则是对原码真值域的个位数取反即可。
补码:正整数原码的补码是其自身,负整数原码的补码则是对原码真值域的个位数取反后,整体+1即可。
起点下标求法:lowbit(x)=x&((~x)+1)
树状数组的作用:树状数组一般用来修改某一点的值,求某个区间的和,数据规模不大的时候,对于修改某点的值是非常容易的,复杂度是O(1),但是对于求一个区间的和就要扫一遍了,复杂度是O(N),如果实时的对数组进行M次修改或求和,最坏的情况下复杂度是O(M*N),而树状数组干同样的事复杂度却是O(M*lgN),所以用树状数组可以进行优化,使代码更加简单。
看树状数组的时候看到起点的时候看课件的时候有点懵逼,当时不明白括号后面的2是什么意思就没管,然后又补了一波原码,反码,补码的知识。
原码:就是直接将十进制数转换为二进制数形式。
反码:正整数原码的反码是其自身,负整数原码的反码则是对原码真值域的个位数取反即可。
补码:正整数原码的补码是其自身,负整数原码的补码则是对原码真值域的个位数取反后,整体+1即可。
起点下标求法:lowbit(x)=x&((~x)+1)
树状数组的作用:树状数组一般用来修改某一点的值,求某个区间的和,数据规模不大的时候,对于修改某点的值是非常容易的,复杂度是O(1),但是对于求一个区间的和就要扫一遍了,复杂度是O(N),如果实时的对数组进行M次修改或求和,最坏的情况下复杂度是O(M*N),而树状数组干同样的事复杂度却是O(M*lgN),所以用树状数组可以进行优化,使代码更加简单。
相关文章推荐
- 周末训练笔记(四)
- 周末训练笔记+hdu1576 A/B
- 周末训练笔记+Uva10912+10994+POJ1006
- 周末训练笔记(10.1)
- 周末训练笔记+hdu1255+4288
- 周末训练笔记+ACM-ICPC国际大学生程序设计竞赛北京赛区(2017)网络赛+2017 ACM-ICPC 亚洲区(南宁赛区)网络赛(9.23,9.24)
- 周末训练笔记(三)
- 周末训练笔记+数论主要知识点
- 周末训练笔记+2017 ACM/ICPC Asia Regional Qingdao+Xian Online(9.17)
- 周末训练笔记(10.8)—hdu3016+poj2886
- 周中训练笔记(三)
- 2018年1月25日训练笔记
- 2017年12月3日训练笔记
- 2018年1月4日训练笔记
- 【笔记】MatConvNet训练小记
- 2018年1月7日训练笔记
- facenet 代码阅读笔记:如何训练基于triplet-loss的模型
- 周中训练笔记1
- 【论文笔记】SparkNET: 用Spark训练深度神经网络
- 8月7日训练笔记