12.15 省选训练总结
2017-12-17 18:47
295 查看
目录
完成情况 | 题目 | 出处 |
---|---|---|
GGS-DDU | HDU 4966 | |
Journey | CDOJ 92 | |
Network | POJ 1144 | |
朋友圈 | BZOJ 2744 [HEOI 2012] | |
放箱子 | CDOJ 1432 | |
Harry Potter and the Forbidden Forest | HDU 3987 | |
度度熊的交易计划 | HDU 6118 |
最小树形图
定义:在一个有向图中,钦定一个根节点,然后选取一些边,然后使得根节点可以达到任意一个节点,就是广义的最小生成树。
算法:朱刘算法
首先判断图的连通性,如果不连通,就肯定没解。
如果有,为每一个点选取一个权值最小的入边,暂时当做选择它。
选完之后可能有环,我们缩一下环,然后对于一个环,每当有一个环上连一条边的时候,将环上的一个点拆了,然后把边连上去,这样子,可以保证必定变成一个树。
例题
Hdu 4966先把课的等级离散一下,然后每一个点向等级低的点来连一条0的边,这样子表示如果学会这个等级,那么小的等级也会学会,然后把a向b按照题意连一条边,这样搞树形图就可以啦。
TARJAN
tarjan算法的核心是dfn与low数组,一个是表示访问到某一个节点的时间戳,一个是这个点能访问的点的最小的时间戳,这样子,如果有环的话,那么就可以直接更新了。但是我们要注意一些细节,比如判断这个点有没有被访问过是用他的dfn来算,而不是vis数组。vis的意义是访问过的,并且这个时候还在栈中的点。还有就是如果用stl的栈,不要忘了最后弹一下当前点。借此算法,我们可以求SCC,无向图的割点和割边(桥),那么以割点为例,割点的判断是他的后代没有能指向他的父亲的边,这个也明显可以用low这些来算。这样子,桥的话类似,就是看连接的两个点。
LCA
方法有很多,倍增,RMQ,tarjan等等都可以,具体的略去。例题
Cdoj 92这种迂腐的题,当然可以直接在仙人掌上跑最短路,但是不用这么麻烦,因为我们可以这样:新的最短路要么是原路,要么是走到新的边上的路径,我们可以直接算出这几个点的距离,比较一下就好了。
无向图求割顶
原理
(见之前)使用tarjan,如果有这个点能到的点的low小于其dfn,说明他不是割顶,反之,如果不小于,那么就是一个割顶。例题
Poj 1144裸题……
次长路
定义:
大于最短路的最小路径。方法有两种:
1.dijkstral的时候再纪录一下次长路的长度,此时次长路转移什么的就可以直接枚举某一条边转移,这样子还可以顺便记录下条数。2.跑完一次最短路之后,枚举一条边的两个端点就可以啦。
相关文章推荐
- 2017开学训练第九周周中总结
- 2017.10.26第九周周中训练总结
- 2017年9月28日训练总结
- 9.8~9.10 训练总结
- 2018年1月4日训练总结
- 12.2 省选训练总结
- 刘汝佳训练指南实用数据结构部分总结
- NOIP训练总结
- 2015.11.2~5训练总结
- 目标检测网络总结+自己训练过程……
- 训练总结 8.17
- 深度学习训练的小技巧,调参经验。总结与记录。
- 训练总结2
- 训练总结 8.2
- 毕业设计总结——自闭症儿童识别面部表情训练系统
- 2017年11月16日训练总结
- 2017年10月15日训练总结
- ACM训练半周总结—12月14日
- 从程序设计方法到思维训练总结
- 备战国际半程马拉松训练第一天总结