暑期集训Day (20~24) 总结 (数据结构)

转眼间,暑期训练已经过了大半了。这半个多月以来也做了很多题,不过还是个菜鸡。。。

上一个专题是字符串专题,不过因为那个专题的题目没有写多少,所以。。。放到以后等做的题多一些再更新吧

这两天学数据结构确实收获不少,虽说之前对线段树,BIT这些早有耳闻,不过也仅仅是限于了解的层面,没有像最近几天系统的训练过。。。涨了很多姿势,不过题是做不完的QAQ。。。

Day 20

这一天的题还好没那么凶残(和后几天比),主要讲的是单调队列和BIT。BIT还不是很深入。

像单调队列的话,其实很常见,不过做题时不太容易想到

A- hdu3415

求环上的最大子串

这道题是一道好题。首先求最大子串是一个经典的dp问题,首先断环成链,这里用单调队列优化dp。n方的做法时很显然的,通过单调队列舍弃不能成为最优解的点,优化成O(n)。

 

G - hdu6319

这道多校的题还是挺难的啊,求区间最大值这个很好求,就是滑动窗口问题。但是求count就不好求了。网上的神奇做法是将整个数组倒过来求一次单调队列,最后剩下的就是count的值,Orz,自己确实想不到。。。不过还真是这样的。。。

 

剩下有几道BIT的题

E - poj1990

首先想到按权值排序后,这题就变成了n方的题,考虑优化。记录每个牛之前所有牛的位置和和牛的个数,就可以算出这只牛的答案,这一步复杂度使用两个树状数组维护后是logn的,共需扫描n只牛,总复杂度nlogn

 

F - poj1195

二维树状数组裸题

 

J - poj3067

转化树状数组求逆序对问题

 

H - poj3321

这道题题解里采用了我之前从来不知道的dfs序(时间戳)来建立树状数组,很奇妙。。。

 

Day 21

这一天似乎讲了整整一天的线段树,做了些题后,我从一个线段树几乎不会的蒟蒻,变成了线段树刚刚入门的蒟蒻。。。

wym大佬将线段树的lazy操作分成了四种题型,而弱弱的我只做完了前两种。。。。

前置技能:单点更新,区间查询

A,B,C属于此类型,C题好像还得字符串处理,就没做了。。。(话说刚学完字符串)

(1)区间加,区间乘

这种应该是最裸的题了,比赛时应该也不会考,不过有助于我们分析标记传递的整个过程。

像D,E都属于这种类型。。。

 

(2)区间收敛

像区间除,区间取欧拉函数或者自己搞个什么函数的,都是这种,套路很明确。传递标记时不用传到最下方,只要当前区间已经达到收敛,就可以return 了。

 

(3)区间加等比数列/等比数列

***待补

(4)区间取max

***待补

 

扫描线和离散化

这个之前确实没怎么涉及到,听过课后又涨了姿势。不过离散化这个还是挺重要的,已经做过好几道题涉及离散化了。。。

似乎xdoj还有几道题,整理过后再发题解。。。

 

Day 22

动态开点,可持久化数据结构(主席树,可持久化并查集)

这个内容之前基本上没有涉及了吧。。。wang聚聚tql

感觉课堂听了后自己看了几篇大佬博客,终于稍微明白了点,也没完全明白。。。

还是做几道题熟悉一下

(可持久化并查集还没会,5555)

 

B - bzoj1452

二维树状数组,有100种颜色,那么就维护100个二维BIT。。。

至于add,ask操作吗,多加了一层for循环,差分求区间和是稍微复杂了点,不过有模板的话(逃)

 

C - hdu6183

神题,被卡成狗,T了20发,最后看了网上博客剪枝滚了过去。。。

这道题硬是用50颗线段树搞的话,QAQ。。。

所以get新姿势 ---->  动态开点

所谓动态开点,就是用到这个点时再添加,单次操作logn,总空间复杂度nlogn。

第一次写动态开点就写炸了。。。

 

D - hdu2665

题目坑差评,明明是区间第k小,被题面写成区间第k大。

这题用主席树,套个板子。。。(思想还是大概要了解的)

不过由于实现时用原来的线段树时细节较多,这里还是套的板子。。。

 

E - bzoj1878

这题其实之前做过,是用莫队做的(优雅)。虽然n根号n的复杂度对于洛谷的1s有点少,不过bzoj的4s足够了啊

几天用主席树做了一遍 (找别人博客抄了一遍),算是对主席树加深一点了解。

听说还有树状数组,之后再补吧。。。

 

Day 23

今天讲了LCA和树剖,之前这两个==没学,今天花了整整一天的时间恶补了一下。。。(结果只做了两题。。。) 

感觉这两题都是不错的,所以我将它们的题解单独写成了博客,下面是这两篇题解的链接:

bzoj4034

https://blog.csdn.net/star_moon0309/article/details/81987563

这道题做完算是入了门

 

bzoj3626

https://blog.csdn.net/star_moon0309/article/details/81987295

这道OI的省选题出的很好,有一定思维,非常推荐做一下~

 

Day 24

今天讲的内容似乎并不比昨天简单。。。

主要内容:莫队,分块,CDQ和整体二分,树套树。。。

窝太弱了,莫队和分块还没去刷题,一天几乎都在看后两项了,然而还是。。。。。。

下面贴上一道CDQ的经典问题—— 动态逆序对(bzoj3295)

https://blog.csdn.net/star_moon0309/article/details/82024715

还有一道树套树的题,第一次做树套树,身体被掏空QAQ

https://blog.csdn.net/star_moon0309/article/details/82024467

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值