近期学习总结

这一个星期我学习了类与对象,倍增算法,前缀和以及STL的相关知识,接下来我会对其进行一个简单的总结:

首先是类与对象,类是一种用户自定义的数据结构类型,由数据成员以及成员函数组成;我们除了需要了解最基本的构造析构,拷贝构造以外;我个人认为有几个点是我在学习过程中需要强化记忆的:

1.数据成员可以是任意类型,但是不能用存储类型auto.register,extern修饰。

2.显式声明内联函数,格式为:

inline 返回类型 类名::成员函数名(参数表)

{ }

3.需要显式引用this指针的三种情况:

(1)在类的非静态成员函数中返回类对象本身或对象的引用时,用return *this;返回对象的地址时,return this;

(2)当参数与成员变量名相同时

(3)避免对同一对象进行赋值操作

4.必须使用参数初始化列表对数据成员进行初始化的三种情况:

(1)数据成员为常量

(2)数据成员为引用类型

(3)数据成员为没有无参构造函数的类的对象

这就是我认为的有关类的几个注意事项;

其次是前缀和,这个算法我感觉与高数中级数的和函数特别类似,Si = a0 + a1 + a2 + a3 + a4 +…+ ai。这个算法,我个人感觉它最巧妙的地方在于他大大降低了查询时间复杂度。原先如果要求一段区间的和,必须要对该区间的每个元素进行访问,整体的时间复杂度为O(n),而经过前缀和算法优化以后,时间复杂度只有O(1).

例如:

给定n个整数,然后进行m次询问,每次询问求一个区间内值的和。

如果用暴力写法,那每次询问都需要从区间左端点循环到区间右端点求和,时间复杂度较大。

这种时候就可以预先求出该数组的一维前缀和。

在最后就是关于倍增算法了,这个我就只记住了一点:只需要 log2(n) 的预处理,就能表示出[1,n]区间内的所有情况,即只要选择了1,2,4...2^i,就能表达出【1,2^(i+1)-1】的所有情况。

好了,这就是我近期学到的东西。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值