2019.7.29金华暑假集训Day2讲课总结

2 篇文章 0 订阅
2 篇文章 0 订阅

吐槽:

今天讲的东西好多啊,虽然比昨天好了点,但是还是一脸懵逼......

分治

分治的思想

将一个区间(或树)分成若干个区间(或子树),以达到优化的目的

例题

现在来两道例题(不是课件上的,但是比课件上的难)

CDQ分治

作用

可以顶替比较复杂的数据结构(如二维,三维线段树),且常熟较小,但是这个东西必须要离线才能够操作

二位偏序

给定N个有序对(a,b),求对于每个(a,b),满足a0 < a且b0 < b的有序对(a0,b0)有多少个

这个题目其实和归并排序差不多,一般都是将一个作为关键字排序,然后用各种数据结构(一般是线段树或树状数组)维护即可

三维偏序

给定N个有序三元组(a,b,c),求对于每个三元组(a,b,c),有多少个三元组(a0,b0,c0)满足a0 < a且b0 < b且c0 < c

首先,我们可以排一个序(按a为第一关键字),然后就可以把b这个东西给消掉,之后我们用归并(也就是分治)把B这个给处理掉,对于c的话,我们就可以用树状数组来做,即可把c给消掉这样就完成了三维偏序(至于代码......还是不会)

四维偏序

就是cdq套cdq——不会......

点分治

原理

将一颗树的重心切开,计算分成多个树的贡献,最后计算有这个点的贡献,以达到优化时间的目地(我乱写的

由于简单的点分治我会了,而且讲的题目我都A了,这里不再说了

图论

说明

对于一些知识点,如spfa,dj这些就不讲了

知识点

判断是否有负环

方法一:判断最短路的边数是否>n

方法二:判断一个点是否入队n次

Prufer序

将⼀棵树变成⼀个序列
每次选择树上标号最小的叶子,删掉它,将与它相连的那个点的标号加到序列列里,直到只剩下 2 个点

好处:一颗树只有一个pruper序,反之同理,而且做法简便,可以用Hash很好的储存(后面的我瞎BB的)

题目

就这样了,下面真的写不下去了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值