[JZOJ5984] 仙人掌】的更多相关文章

Description Solution 标算我并不会... 考虑一种根号思想 首先以 \(1\) 为根dfs整棵树 那么在任意时刻一个点的儿子的权值种类最多只会有 \(\sqrt m\) 种. 可以在每个点维护一个邻接表,存储这个点的儿子们的所有权值种类,以及该权值出现次数. 考虑如何支持修改 如果要对点 \(x\) 进行修改 首先要改它的父亲 \(fa\),就要找到它父亲的父亲 \(y\) ,因为 \(fa\) 是 \(y\) 的儿子,\(fa\) 的信息储存在了 \(y\) 邻接表里. 具…
题面 题解 数据结构做傻了.jpg 考虑每一个节点,它的儿子的取值最多只有\(O(\sqrt {m})\)种,那么可以用一个双向链表维护儿子的所有取值以及该取值的个数,那么对儿子节点修改一个值就是\(O(\sqrt{m})\),整体修改可以通过在自己身上打一个标记做到\(O(1)\) 然后还要修改父亲,那么可以通过修改父亲的父亲的儿子实现,并把父亲打上一个加一标记 然后还需要知道该时刻某个点的具体取值,可以通过父亲身上整体加一的标记和自己身上被儿子打的标记的总和求出 //minamoto #in…
学习了一下圆方树. 圆方树是一种可以处理仙人掌的数据结构,具体见这里:http://immortalco.blog.uoj.ac/blog/1955 简单来讲它是这么做的:用tarjan找环,然后对每个环建立一个新点,然后将环上的边删去,并环上的每个点都连到新点上.这样我们就可以把一个环缩成一个菊花图,重复这么做,一棵仙人掌就变成一棵树啦!这棵树就叫做圆方树,其中原点叫圆点,新点叫方点. 圆方树和原仙人掌很相似,而且它又是一棵树,于是我们就可以在上面dp啦!不过要注意的是对于方点的处理,不能直接…
良心的题解↓ http://z55250825.blog.163.com/blog/static/150230809201412793151890/ tarjan的时候如果是树边则做树形DP(遇到环就无视),最后在tarjan回溯前扫一遍当前点为“最高点”的环,进行环上DP,这个环上DP是$O(n^2)$的,但如果我们用单调队列优化则是$O(n)$的 总复杂度$O(n)$真是无限仰膜OTZ #include<cstdio> #include<cstring> #include<…
1952: [Sdoi2010]城市规划 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 73  Solved: 23[Submit][Status][Discuss] Description 小猪iPig来到了一个叫做pigsty的城市里,pigsty是一座专门为小猪所准备的城市,城市里面一共有n个小区给小猪们居住,并且存在许多条无向边连接着许多小区.因为这里是一个和谐的城市,所以小猪iPig准备在这个城市里面度过他的余生.若干年之后小猪iPig…
4316: 小C的独立集 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 57  Solved: 41[Submit][Status][Discuss] Description 图论小王子小C经常虐菜,特别是在图论方面,经常把小D虐得很惨很惨. 这不,小C让小D去求一个无向图的最大独立集,通俗地讲就是:在无向图中选出若干个点,这些点互相没有边连接,并使取出的点尽量多. 小D虽然图论很弱,但是也知道无向图最大独立集是npc,但是小C很仁慈的给了一个很…
仙人掌(cactus) Time Limit:1000ms Memory Limit:64MB 题目描述 LYK 在冲刺清华集训(THUSC) !于是它开始研究仙人掌,它想来和你一起分享它最近研究的结果. 如果在一个无向连通图中任意一条边至多属于一个简单环 (简单环的定义为每个点至多经过一次) ,且不存在自环,我们称这个图为仙人掌.LYK 觉得仙人掌还是太简单了,于是它定义了属于自己的仙人掌.定义一张图为美妙的仙人掌, 当且仅当这张图是一个仙人掌且对于任意两个不同的点 i,j,存在一条从 i…
[bzoj1023]仙人掌图 题意 给一棵仙人掌,求直径. \(n\leq 100000\) 分析 分析1:[Tarjan]+[环处理+单调队列优化线性dp]+[树形dp] 分开两种情况处理: ①环:把整个环搞出来,进行dp,见bzoj1791 方法差不多,只是环处理+单调队列维护dp. ②不是环:直接dp 分析2:圆方树 这个东西还没有学... 反正文章先放在这里吧. http://immortalco.blog.uoj.ac/blog/1955…
题意:给定一张有向图,问是否是仙人掌图.仙人掌图的定义是,首先,这张图是一个强连通分量,其次所有边在且仅在一个环内. 首先,tarjan可以判强连通分量是否只有一个.然后对于所有边是否仅在一个环内,我的做法是,当一个点在 tarjan 的 dfs 中,引出下一条边,如果这条边指向了一个时间轴上比它大的点,那么该点一定是 dfs 树中它的后继节点,在之前必定有一条这两点之间的路径,那么这两点之间就已经有两条路径了,而从后继节点一定能返回到祖先节点而形成环(强连通),所以返回祖先节点的路径一定与两点…
DP+单调队列/仙人掌 题解:http://hzwer.com/4645.html->http://z55250825.blog.163.com/blog/static/150230809201412793151890/ QAQ了 呃……第一次做仙人掌的题目……感觉性质还是蛮神奇的(我是不是应该先做一点环套树的题目呢?>_>) 每个点都只会在一个简单环上,所以在dfs的时候,对于一个环,它上面的点是深度连续的一段(沿着father可以遍历这个环!),然后最后一个点再指回起始点,所以只要l…