最小树形图(朱刘算法)

定义:一个有向图,存在从某个点为根的,可以到达所有点的一个最小生成树,则它就是最小树形图。对于没有给定根,我们可以新建一个点,然后让它向所有点都连一条权值为所有边权和的(或者自己定义一个inf)边,然后把该点定为根。这样找到最小树形图一定包含且只包含一条新边,减掉这条边的权值就可以了。 算法流程: (0,先除去自环) 1,选入边集——找到除root点之外,每一个点的所有入边中权值最小的,用数组...
阅读(53) 评论(0)

强连通分量(Kosaraju算法)

求有向图的强连通分量除了大家熟知的trajan,还可以用Kosaraju 先说算法流程: 1,对原图dfs一遍,并将出栈顺序的逆序作为“伪拓扑序” 2,对原图够构反向图 3,按伪拓扑序在反向图上dfs,新遍历到的点都属于同一个强联通分量。正确性证明: s在反向图上dfs能够遍历到t,说明存在t到s的路径,而现在需要证明的就是存在s到t的路径。 我们知道,s的伪拓扑序小于t,也就是s后退栈...
阅读(38) 评论(0)

K最短路问题(A*算法)

问题在有向带权图G,求从s到t的第k短路(不严格递增)的长度。A*算法通过一个估价函数f(x)来估计图中的当前点p到终点的距离,并由此决定它的搜索方向; 设g(x)表示走当前路径到x的长度,dis(x,y)表示x到y的最短距离,由于y只有等于t时才有用,所以我们可以连反向边,然后从t出发跑一遍最短路得到。 令f(x)=g(x)+dis(x,t) 建一个优先队列,初始将源点s加入到队列中; 每...
阅读(54) 评论(0)

中学生数据结构题

题目大意给一棵n个带点权节点(初始为0)的树 有三种操作: 1,对一条路径上的点的点权全部增加一个数 2,求一条路径上的点的点权和 3,对一条路径进行轮换(假如路径为a_1~a_k则a_1–>a_2,a_2–>a_3….a_k–>a_1)容易想到用lct维护,轮换操作可以直接把左端点接到右端点的右儿子处,但这样会改变树的形态,具体实现就是把权值和形态分开来维护,维护树的形态的lct中,每个s...
阅读(188) 评论(0)

GDOI第四轮模拟总结

day1t1想了想50分,然后就推不下去了,结果50分居然还打wa了。 t2只记得是做过的题,好像不是特别好想来着,于是先放着,后来却也没时间去想了。 t3想了好久的dp,愣是没想到折半。 t4有个naive想法就直接上了,然后就一直在想t3,结果t4的做法是错的,早知打70分了。。像t4这种题,如果只是感觉上是对的话,一定不能冒然开码,不如求稳拿部分分,当然,如果有能力能够想清楚做法是否可行...
阅读(91) 评论(0)

后缀数组复习小记

定义: suf[i]表示以i为开头的后缀 rank[i]表示suf[i]的排名,sa[i]表示排名为i的后缀 height[i]表示sa[i]和sa[i-1]的lcp h[i]表示suf[i]和suf[sa[rank[i]-1]]的lcp sa[rank[i]]=i,所以只要能求出rank,就可以求sa 倍增 求rank相当于把n个后缀排序,直接暴力排,显然是O(n^2*log(n))...
阅读(48) 评论(0)

GDOI第三轮模拟总结

day1t1没有想到一个性质:插入点的父亲是它的前驱和后继中深度较大的那个。然后感觉十分不可做啊,于是就是打了个模拟spaly,结果有个地方忘记update。。 t2思路再在一次陷在莫队中,以为数据会有梯度,就直接上了,一番卡常之后,还是只有暴力分。。 t3没有什么思路,就弃了。。 t4,30分暴力也需要计算几何基础,然后就GG了。。 day1最后只有30,这一场最可做的应该是t2,没有想到...
阅读(88) 评论(0)

UOJ【清华集训2015】V

题目大意初始给出n个数,a[1]~a[n] 有m个操作 1,把a[l]~a[r]加上x 2,把a[l]~a[r]减去x后和0取max 3,把a[l]~a[r]和x取max 4,输出a[x] 5,输出a[x]的历史最大值(即出现过的值的最大值)数据范围,n,m<=5*10^5,x<=10^9设计标记令标记(a,b)表示对于x进行max(x+a,b)那么 操作1相当于(x,-inf) 2...
阅读(104) 评论(0)

GDOI2017第二轮模拟

day1真点一题想不到。 其实这一场一开始就认真打暴力起码60+60+30+20=170,不至于很差。 但可能和上一轮的模拟难度相差较大,我死钻了两个多钟都没开始码题,然后心态爆炸几乎要弃疗。 t1其实不算难,但我一直没法脱离莫队的思路,然后就GG了。 t2算是结论题了,由于图论知识稀缺,不会正常 t3只会暴力,但由于理解错一个部分分,所以只会30 t4讨论起来十分繁琐,只会打暴力。。...
阅读(105) 评论(0)

GDSOI2017模拟

今天真的炸穿了。 t1,由于没打过轮廓线dp+没完全听懂xdl的课(觉得插头dp考了也不会,可能听得不太认真,也是连简单的轮廓线dp也没学会),于是比赛中想到了如何把状态压成3进制,却愣是只能O(2^m)去转移,原来只要一个位置一个位置去转移就可以O(1)转移了。这个平时留下的坑,幸好在这次被发现了,有所填补。 t3,由于一开始有点想法,于是几乎花了所有的时间,关键一开始没想清楚就开始码,发现不...
阅读(60) 评论(0)

GDOI2017模拟一试

终于开始刺激的GDOI模拟了, 长时间做一些**的难题,是时候需要换个脑子… t1其实是犹豫了一下的,因为有一个不太清晰的O(n)的思路,但觉得带个log也能过,也没必要再想,而且还不容易翻车。 t2其实不算难,得到一个比较显然的性质之后思路就一直陷在贪心里,不过数据水,瞎贪也有50… t3直接上点剖,发现不能直接跑过,想了一想,子树大小小于k时贡献为0,于是复杂度/k,于是就跑得飞快。...
阅读(64) 评论(0)

GDOI2017模拟二式

今天炸得很惨,主要题目不是很难,后两题本来都能切得,结果炸穿了。 t1是真的完全没想到,可能因为自己的字符串水平确实不高,所以平时也不怎么喜欢做字符串的题,而且字符串算法也不熟,可能即使想到了t1可以转化为求本质不同的字符串个数也打不出广义后缀自动机,这个短时间可能很难提高,在后期的训练要有意识的注重自己的薄弱知识。 t2想到了贪心,又加了一些减枝,然后就没多想了。这题得分还是比较可观的,虽然其...
阅读(50) 评论(0)

FFT学习笔记

FFT可用于解决一些卷积问题。 一般问题形式如下: C=A∗BC=A*B C[i]=∑ij=0A[i]∗B[i−j]C[i]=\sum_{j=0}^iA[i]*B[i-j]若把A,B看成两个次数为n多项式 A(x)=∑ni=0a[i]∗xi,B(x)=∑ni=0b[i]∗xiA(x)=\sum_{i=0}^na[i]*x^i,B(x)=\sum_{i=0}^nb[i]*x^i 原问题等于两...
阅读(49) 评论(0)

lct学习笔记

lct不能够实现“对某个点的子树进行的某些操作”(但可以实现类似求子树大小的简单操作),然而对于大部分动态树问题来说还是够用了。 主要的四个操作。 1,Access(x),把原树上x到根路径上的所有点放到同一颗splay里面 2,Makeroot(x),让x成为所在树的根 3,Cut(x,y),切断相邻的节点x,y的边 4,Link(x,y),让x,y连一条树边,成为属于原图的同一棵树。基...
阅读(66) 评论(0)

bzoj 4573大森林

题目大意初始给出n棵节点数为1且生长节点标号为1的树,有三个操作: 0 l r 表示将第 l 棵树到第 r 棵树的生长节点下面长出一个子节点,标号为当前0的操作数+1; 1 l r x 表示将第 l 棵树到第 r 棵树的生长节点改到标号为 x 的节点。对于 i (l≤i≤r)这棵树,如果标号 x的点不在其中,那么这个操作对该树不产生影响; 2 x u v 询问第 x 棵树中节点 u 到节点 v...
阅读(85) 评论(0)
81条 共6页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:16483次
    • 积分:960
    • 等级:
    • 排名:千里之外
    • 原创:80篇
    • 转载:1篇
    • 译文:0篇
    • 评论:15条
    最新评论