训练周记

这周入门了一下计算几何,码量挺大的,由于都是基本运算,还没有涉及算法知识,就先不整理了

之后打算在学习计算几何的同时,再回顾一下数据结构,总的 ACM 知识最后看看字符串还有没有能力学下去,打算就看这几个专题看的深一点,毕竟每块算法都入门一下和没学没什么不同。

周六和 lxh 把小米 ICPC 第二场网络海选赛打了一下,跟他还是挺好交流,但是做的还是差强人意,数据结构的那道题不知道怎么进行区间更新,这也是我想要深入学习一个原因,今年的比赛不打算参加了,还没有找到合适的队友,没有打下去的必要。

 

这周入门了一下分块,下周打算再把入门莫队的题做了。

由于之前线段树打得比较多,所以分块中涉及 push_down 的部分题目做起来比较上手,思路也比较好想,但是有时也会忍不住感叹,这种题也能用分块?

  • 求区间 [l,r] 内的 x 的前驱或者后继,对每一个块进行排序,按照二分查找可以将复杂度降到 logn
  • 求区间 [l,r] 内大于 x 或小于 x 的元素个数,同样可以按照上述办法解决
  • 将一个区间内做多次 +x  /  *x  的操作时,可以采用 push_down 的思想解决,也可以利用数学推导,更快地解决这个问题
  • 多次在某一位置前插入一个数,这样每一块的大小会发生改变,所以要用到动态数组,而且动态数组的大小如果很大的话,会丧失分块的优势,所以需要重新进行分块,这个重构思想我觉得很重要

分块算法的优势主要体现在对于每一个块进行修改时,由于涉及到的元素数目基数不大,所以能够用暴力水过去,但是根据题目而言,如何将题目确定在应用哪一个数据结构上面,或者说如何将题目要求转移到所选取的数据结构上面,对我来说显得比较困难

下周四级考试就要开始了,会忙一下,学习算法,搞竞赛就是让自己重视一下计算机基础,去学习当下比较热的语言,炫耀一下自己掌握了多少多少,会觉得自己很风光,但是等着去抱大腿,等着别人带,未免显得太功利了(有点跑题了)

下周尽力吧,争取开一下二维几何的计算。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值