码迷,mamicode.com
首页 > 其他好文 > 详细

混进省队后的进化系统

时间:2015-04-24 14:20:23      阅读:175      评论:0      收藏:0      [点我收藏+]

标签:

总算是有惊无险的混进省队啦,这代表着我不用滚回去上课辣!
但是像我这种傻叉肯定是不行哒,于是需要一个进化系统!
(觉得像我这种人太弱,就大体上设定一个进化方向,不要限定时间啦…)

Task1:动态树分治(完成情况0%)

BZOJ3435: [Wc2014]紫荆花之恋
BZOJ3924: [Zjoi2015]幻想乡战略游戏
BZOJ4012: [HNOI2015]开店

Task2:经典分块(暂时挖坑)

Task3:网络流模型(暂时挖坑)

Task4:树的性质(暂时挖坑)

Task5:数位dp(暂时挖坑)

就在这里把日记补一补吧…

2015/4/24

说起来又是好久都没有写日记了呢…
对于JLOI的题目我就不多说啦,毕竟都是大水题,结果最后我却只有那点可怜的分数…

树上的路径包含问题总结

主要是看下面的这道题目了吧.
BZOJ3772: 精神污染
主要有两种方法,对于每条路径,计算这条路径覆盖了多少条子路径.
这个分类讨论一下就行了.
我们预处理一下这棵树的入栈出栈序.
如果这条路径是从上(a)到下(b)的一条链,令cb的深度大于a的深度最小的祖先,则我们建两个矩形,[x[1,inc?1],y[inb,outb]],[x[outc+1,n],y[inb,outb]],显然这两个矩形是没有交的.
当然这有一个条件,那就是ab.
a=b的时候,这就是一个点…貌似利用dfs序就很不容易搞定了.
否则这条链是分岔的,那么一个矩形就可搞定,[x[ina,outa],y[inb,outb]].
所以,当所有被覆盖的路径都满足ab的时候,我们就可以搞出这些矩形,再离线利用扫描线搞搞就行了.
将每一条路径看作一个点,那么这条路径覆盖的路径条数就是这个点在多少个矩形中.
由于有可能是交换之后出现在矩形中,对于一个点我们插入两次(注意a=b这种路径答案肯定是0),并将矩形覆盖数求和即可.
注意这种算法虽然有限制,但是时间复杂度是可以做到只与询问数有关的.
另外一种思路比较巧妙:
我们注意到一条路径是另外一条路径的子路径当且仅当这条路径的两个端点都在另外一条路径上.
于是,对于每一条路径,我们都固定一个端点,并在这个端点上存下另外一个端点.
那么,问一条路径覆盖了多少条子路径,等价于问这条路径上所有的点对应的所有另外的端点有多少依然在这条路径上.
于是随便利用什么数据结构搞搞都行了.(这个暂时不知道支不支持复杂度与询问相关)
于是剩下的要等我心情好了再填上呢.

混进省队后的进化系统

标签:

原文地址:http://blog.csdn.net/wyfcyx_forever/article/details/45245819

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!