摘要: 树是一种很牛X的数据结构,性质有很多,比如(自行百度去) 今天主要讲一下如何求树的重心和直径(在某些算法中要用到) 1.树的重心 树的重心也叫树的质心。找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡(百度百科) 树的重心在点分治中可以保 阅读全文
posted @ 2018-02-28 10:58 空気力学の詩 阅读(1367) 评论(0) 推荐(1)
摘要: 它这道题的分类是分治,但我还是觉得和树的关系更密切些。 也算是完成了第一个最简单的部分——基 本 算 法(更强大的在后面)。 是近来打过的比较难的题目了,因为涉及到很多新的东西 也花了挺长时间去学点分治和树的重心之类的东西。 首先,O(n^2)的爆搜还是很容易想到的吧,可惜过不了。 考虑无根树转有根 阅读全文
posted @ 2018-02-27 16:31 空気力学の詩 阅读(171) 评论(0) 推荐(0)
摘要: 这个真的太水了——MST专辑。 如果不会MST的两种算法的同学可以出门右转了。 大致讲一下,第一题我是用Prim+堆优化的(毕竟点比较多),后面三题用的是Kruskal(习惯打,而且并查集常数实在小) 前三题是裸题,最后一题要BFS预处理图上两点间的最短距离再跑Kruskal,稍微麻烦了点 按顺序贴 阅读全文
posted @ 2018-02-27 16:04 空気力学の詩 阅读(164) 评论(0) 推荐(0)
摘要: 一道LCA的练手题。 题目大意,在一个树中给出每两点之间的距离,然后让你求任意两点间的距离。 很明显这可以用树剖(但是我不会),但是因为这里没有涉及到修改,我们可以巧妙的利用LCA来解决这个问题 记一个点x到树根的距离为dis[x],另一个店y到树根的距离为dis[y],运用一下简单的容斥原理就可以 阅读全文
posted @ 2018-02-26 16:30 空気力学の詩 阅读(153) 评论(0) 推荐(0)
摘要: 一道拓扑的经典题,但理解题目让我很伤。 大意是说给出关于n个字母的偏序关系,让你判断是否有唯一序列或有环(输出当前是第几步,如果有唯一序列还有输出),如果都读完了还不能确定,就输出另一种情况。 按照题意,每读入一步就走一遍topo来判断。 有一个坑点:就算中间找到并退出了还是要把剩下的读完。 具体看 阅读全文
posted @ 2018-02-26 16:08 空気力学の詩 阅读(194) 评论(0) 推荐(0)
摘要: 这次是校内OJ(HHHOJ)线上比赛,网址:http://211.140.156.254:2333/contest/51 (我去刚刚快写完了手贱关掉了) 这次总体难度也不高,T1&&T2都是TG难度的题(可能还更低),T3要用到主席树(这个以后再说)大力切,但60分的暴力还是很好水的。 所以 100 阅读全文
posted @ 2018-02-26 15:04 空気力学の詩 阅读(277) 评论(0) 推荐(0)
摘要: (此题与POJ2777重题) 为了加深对线段树的记忆,然后开始搞这道题。 TM的WA了一下午就是发现x可能大于y(然而题目里说的还很清楚,我TM没看见) 这道题只需要在线段树的板子上改一些地方就可以了: 1.存储时不是存储颜色,而是将它状压成一个整数(如序号为3的颜色存为1<<3=8) 2.回溯时不 阅读全文
posted @ 2018-02-26 13:58 空気力学の詩 阅读(307) 评论(0) 推荐(0)
摘要: 上课讲了下数据结构,因为暂时没找到分块的板子题,所以做一下这道题加深一下对树状数组的理解。 题意就是求逆序对,从逆序对的定义就可以看出,方法有两种:归并 or 树状数组。 感觉树状数组更高级一点,写起来也比较容易(其实是不会归并) 在这里由于a[i]太大(0~999999999),因此离散化一下,也 阅读全文
posted @ 2018-02-24 16:28 空気力学の詩 阅读(198) 评论(0) 推荐(0)
摘要: 这次分数普遍偏高,而且yu'ben'ao又AK了! 但是最后一题莫名爆0让我很感伤啊(搓了1个多小时的20分暴力)! 难度偏低,主要是T2没剪枝,炸了3个点。 T1 这种SB题恐怕是千年难遇了,PJ 的难度 稍微观察一下就能发现ans=max{a[i]+i-1} 缅怀yekehe60分 CODE T 阅读全文
posted @ 2018-02-24 16:09 空気力学の詩 阅读(200) 评论(0) 推荐(0)
摘要: 这次的题目是著名的模拟(水逼)专题 题目难度都不大,思维也不深,就是一个字——烦 同时很多题目都有很多坑点 1608 题意是告诉你一个只有()的字符串(且匹配正确),每个)的左边有几个(,让你求每一对括号中包含了几对括号。 思路很水,模拟出原字符串再开个栈做一次就行了。 CODE 2632 就是一堆 阅读全文
posted @ 2018-02-24 15:56 空気力学の詩 阅读(249) 评论(0) 推荐(0)
摘要: 这次的题目叫图的深度&&广度优先遍历。 然后等我做完了题发现这是DFS&&BFS爆搜专题。 3278:题目是经典的FJ,他要抓奶牛。他和牛(只有一头)在一条数轴上,他们都站在一个点上(坐标为0~1e5)。假设FJ的位置为x,他每次可以去x+1,x-1,x*2的地方。问他最少走几次才能抓到他的牛(牛不 阅读全文
posted @ 2018-02-12 16:48 空気力学の詩 阅读(254) 评论(0) 推荐(0)
摘要: 这次是贪心(水笔贪心)专题。 先看1328,一道经典的导弹拦截(或者是打击?不懂背景)。 大意是说在一个坐标系中有一些点(或是导弹),你要在x轴上建一些东西,它们可以拦截半径为d的圆范围中的点。问最少修建的个数,不可能输出-1。 经典问题了哈,主要是把二维的转成一维。 对于每个要拦截的点以d为半径画 阅读全文
posted @ 2018-02-12 16:09 空気力学の詩 阅读(176) 评论(0) 推荐(0)
摘要: 最近由于复习备考(然而考得还是很炸),很久没打题目了。现在开始刷寒假作业,不得不搞POJ 话说没有中文真的好烦啊! 先看1753 题目大意是说在一个4*4的格子中有黑白两色的棋子,你可以翻动其中的棋子但同时它四周(上下左右)的棋子也会被翻动,问你最少要翻几次才能翻成全黑或全白。 首先要想到,一个棋子 阅读全文
posted @ 2018-02-10 15:21 空気力学の詩 阅读(163) 评论(0) 推荐(0)
摘要: 这次惨烈的炸了个精光(只有20),然后对我的OI想法造成了巨大的转折。 (以上有点作,其实我只是再也不用vector存图了而已(用邻接表)) 难度很不均匀,而且题型很狗(还有结论题???) T1 坑人结论题,想出来100,没有就爆零 我和这道题杠了一个半小时,然后他们猥琐地告诉我结论——要么四边形要 阅读全文
posted @ 2018-01-18 20:10 空気力学の詩 阅读(216) 评论(0) 推荐(0)
摘要: LCA,就是求树上任意两点的最近公共祖先 (本题图片与代码均为Luogu3379) 方法我好像讲过一个,这次把主要的三个一起讲一讲 <1> 倍增(O(n log n)) 我们先考虑最基本的LCA,记录每一个点的父节点和深度。 对于两个点x,y,先将它们调到同一高度(令dep[x]>dep[y],即把 阅读全文
posted @ 2018-01-18 19:15 空気力学の詩 阅读(250) 评论(0) 推荐(0)
摘要: 所有想练习A*的人都先来敲一下这道题吧。 数据范围即便只有5*5,但朴素的爆搜还是会超时。 因此考虑剪枝。 对于这道题,肯定只要进行最优化剪枝,判断现在走的步数+剩下最少要走的步数,如果大于ans或者15就return; 那么,估价函数怎么写? 利用小学生的思想,将目前的图与目标状态对比一下,还有多 阅读全文
posted @ 2018-01-13 12:10 空気力学の詩 阅读(151) 评论(1) 推荐(0)
摘要: 说实话,看到这道题的洛谷评级我傻了(传说中的最高难度) 然后看完题目才确定这真的是一道k短路的裸题。 也就敲了个A*吧,15分钟竟然没有调试一遍过。 欧洲玄学。 看题目,主要是找几条从1走到n的路加起来小于等于给定的E即可。 所以就是一道k短路。 A*和DJ很像,就是把堆的比较操作从当前路径长度+该 阅读全文
posted @ 2018-01-13 10:59 空気力学の詩 阅读(214) 评论(0) 推荐(0)
摘要: 这名字诡异(然而就是这样) 这次主要是yekehe和yu‘ao都来了,所以很开心的讨论(上了200)。 但是,yu’ao dalao又AK了!(666666) 不过总体难度也不高,主要是T3没思路。 T1 二分或桶 ·如果你不会这道题,出门右转找傅哥去。 去年蒟蒻时期的噩梦啊。然而只是一道PJ的水题 阅读全文
posted @ 2018-01-11 20:01 空気力学の詩 阅读(204) 评论(1) 推荐(0)
摘要: 去年的比赛了,然而今天才改好。 总体难度适中,有大佬AK。 主要是自己SB第二题没想出来,然后又是可怜的100来分。 T1 一道二分+数学的题目。 我们可以二分叫的次数,然后用公式(等差数列,公差都是zi)算一个最大的可行的数目。 最后把多余的加上去即可。 注意当xi,yi都等于0的情况。 CODE 阅读全文
posted @ 2018-01-11 19:38 空気力学の詩 阅读(237) 评论(1) 推荐(0)
摘要: 这就是一道很朴素的LCA题。 算法应该主流的有三种:DFS序+RMQ;倍增;Tarjan; 其中前面两个是在线算法,O(n log n),后一个是离线的,复杂度也是线性的O(n+q)。 所以对于这道题n,q都偏大的情况下还是选择了Tarjan(后两种我不会)。 简单说一下Tarjan的思想,对整个树 阅读全文
posted @ 2018-01-05 13:20 空気力学の詩 阅读(230) 评论(2) 推荐(0)
摘要: Luogu在博客里的第20题! 这其实是一个想明白的就很简单的问题。 首先,我们可以否决那些直接跑最短路然后看能拆出几个2^k次方的算法。 其次,Floyd求最短路大家肯定都知道,但是求传递闭包的方法也是利用了Floyd。 所以,这道题的大致思想就是Floyd两次! 我们可以先把题目中给定的点先连一 阅读全文
posted @ 2018-01-04 18:34 空気力学の詩 阅读(161) 评论(0) 推荐(0)
摘要: 俗话说得好:模板敲得好,NOIP炸不了。 因此为了防止比赛时想到了题解而敲不出来的情况,我们要坚持刷模板。 (争取每次上线的话打1~2个吧) (排名顺序没有任何意义,想到什么写什么) SPFA(对应题目Luogu P3371 【模板】单源最短路径) Dijstra(堆优化)(对应题目Luogu P3 阅读全文
posted @ 2018-01-02 19:28 空気力学の詩 阅读(488) 评论(4) 推荐(1)
摘要: 一年没写博客了(滑稽)。 这道题很玄学,导致自己都有一个坑人的问题求解。如果有大佬有能力求帮助:https://www.luogu.org/discuss/show?postid=30231 再来讲一下我对这道题的理解吧。 首先,对于判断两个数是否在同一列战舰中,我们只需要朴素的并查集就可以。 但这 阅读全文
posted @ 2018-01-02 18:42 空気力学の詩 阅读(207) 评论(0) 推荐(0)
摘要: 不会Tarjan,难道就不能与邪恶的SCC作斗争了吗? 祭出Kosaraju。 一些变量名的意义: a[N] 原图的vector存储 b[N] 原图的所有边反向vector存储 s dfs得出的拓扑序列栈 c[[N] 每个点的SCC编号 算法框架: 1.将原图做一遍类似于拓扑的dfs,越早访问的顶点 阅读全文
posted @ 2017-12-28 20:10 空気力学の詩 阅读(1087) 评论(1) 推荐(0)
摘要: 这显然是一道求强连通分量(SCC)的题目。 只要你正常,都知道应该写Tarjan。 然后(假装会写Tarjan),其实我当然不会。但是求SCC还有另一个算法。复杂度和Tarjan一样,只不过常数大了点而且不为人所知而已。 蓝书和挑战程序竞赛上都有这个算法,好像叫Kosaraju。是不是很拽的感觉。 阅读全文
posted @ 2017-12-28 19:54 空気力学の詩 阅读(190) 评论(0) 推荐(0)