倍增
litble
Away From OI已久,一天天变菜中,博客平时不咋看,也没能力答疑和改错了,因此不会互动见谅orz
展开
-
洛谷P1967codevs3287货车运输
1.思路分析 刚开始以为是网络流,后来很快发现因为每次查询不同要更改源点汇点,并且万一有两条路连接同样的城市,货车只能走一条。 等等,如果有两条同样的,货车只能走一条? 那么不用求最短路,咱们生成一棵最大生成树吧。 愉快地生成了最大生成树后,显然是求lca啦!倍增维护最小值即可。 2.代码 #include #include #include #include #include #in原创 2017-04-10 20:07:42 · 357 阅读 · 0 评论 -
洛谷1084/codevs1218 二分+倍增+贪心,分步讲解
题目分析我们要明确我们做什么,一步一步慢慢来,否则会被这题逼疯。1.预处理倍增我们会发现,离根节点越近的节点,控制的节点更多。所以由贪心的思想,所有的军队都要尽可能地往根节点走。 ”往上提“类型问题一般使用倍增优化。——xzy神犇(见传送门:xzy的博客) 好大的,那么我们可以dfs一遍,将倍增要用的一些值都处理好(见代码)2.二分答案军队可以同时移动,说明我们要控制传染病的时间是军队移动到位时原创 2017-10-12 20:48:24 · 1375 阅读 · 0 评论 -
bzoj4719/洛谷1600 noip2016天天爱跑步
题外话呃,话说当年我好像连暴力25分都没拿满哈?学OI几个月的萌新直接上刑场考场也是没有办法的事情。 现在我改了noip2016的所有题目,祝愿我noip2017rp++,不要再被大佬们往死里踩了。题目分析对于每一条路径(s,t),我们令o=lca(s,t),则路径可以拆成s->o和o->t,最后处理o被重复算的那一次。dep表示某个节点在树上的深度,w表示某个节点上观察员出现的时间。 对于s-原创 2017-10-08 21:17:34 · 343 阅读 · 0 评论 -
洛谷1081/codevs1199 开车旅行 链表,倍增,模拟
题目分析这题70分暴力很easy…正解有点难想…但是比较容易理解…可是代码比较难打…work1我们可以预处理从每一个城市出发小A和小B分别到的下一城市。 怎么处理?排序后用双向链表即可。很显然,若当前城市为x,那么排序后,小A和小B分别到的城市只用在x+1,x+2,x-1,x-2中找即可。每次搞事完毕后从链表中删除当前节点即可保证找的下一城市一定在当前城市后面。int n,m; int pos[N原创 2017-10-11 19:38:19 · 289 阅读 · 0 评论 -
bzoj4539/洛谷P3248/loj2050 树 倍增lca+主席树
我们要完成两个操作:插入和询问。 并且大树和模板树两块都要资磁倍增lca和获取两点间距离,这个很好实现。 插入: 1.每一次从模板树上搞点到大树上,看作添加一个大点 (就是一棵子树)。我们要搞出一个b1,表示大点的根节点在模板树上的编号,一个b2,表示根节点在大树上的编号,一个ff,表示根节点的父亲在大树上的编号。 2.在大树上连边,边权是两个大点的根节点之间的距离。 在计算这个距离的时...原创 2018-03-26 18:40:28 · 331 阅读 · 0 评论