04 2019 档案

摘要:支持getmax的队列/栈 二分图判定 二分图匹配 KMP算法 AC自动机 Tarjan有向图的Tarjan算法无向图的Tarjan算法 A*算法 环套树环套树的定义和处理理⽅方法一些简单的环套树问题 阅读全文
posted @ 2019-04-28 19:01 锦依卫Lijilai 阅读(152) 评论(0) 推荐(0)
摘要:这就是一道小学奥数倒水题(滑稽) 言归正传,首先注意到数据范围很小,只有200,那么可以把三个杯子里的水量作为一个状态进行暴力bfs,显然水的总量一定,只要知道前两个杯子有多少水这个状态就确定了,也就是说状态最多200x200种,很小的。 再考虑下贪心,到某个杯子水量为d的最小倒水量一定由前一个状态 阅读全文
posted @ 2019-04-19 18:23 锦依卫Lijilai 阅读(202) 评论(0) 推荐(0)
摘要:这道题对费用的规定是min(|x1-x2|,|y1-y2|)。如果暴力枚举所有的点复杂度O(n²),n <= 200000,显然爆炸。于是我们要考虑加“有效边”,一个显然的事实是对于两个点,如果经过不在两点连线上的第三个点中转得到的费用之和一定比直接连边小。所以考虑排个序,分别按照x、y排序,依次加 阅读全文
posted @ 2019-04-18 19:34 锦依卫Lijilai 阅读(179) 评论(0) 推荐(0)
摘要:这个题有两种路径,普通线和商务线。而且告诉我们商务线就只能用一次,那很显然枚举就行。枚举每一条商务线,看能否更新最短路就行。我们从起点终点分别出发跑最短路,如果起点到商务线一个端点的最短距离加上终点到商务线另一个端点最短距离再加上商务线距离之和可以更新现有最短路,则更新最短路。枚举下去就行,复杂度为 阅读全文
posted @ 2019-04-17 18:14 锦依卫Lijilai 阅读(216) 评论(0) 推荐(0)
摘要:这是一道紫题,然而实际上我觉得也就蓝题难度甚至不到。 and,这道题就是一道数学题,代码模拟计算过程。 求最短路嘛,肯定要考虑建图,只需要把中间的墙上每个口的边缘处的点作为图中的点就行。至于为什么,显然如果我们取中间任何一个点连边,到下一面墙时路径之和总是比连其中一个边缘的点要大,直观感(gán觉( 阅读全文
posted @ 2019-04-16 22:05 锦依卫Lijilai 阅读(598) 评论(0) 推荐(1)
摘要:emmm交了第8次才过。 这道题目测一道单源最短路问题,因此dijkstra或者spfa板子先准备好。因为题中对最短路有限定: 而题中还说“题目保证终点没有出边。”,所以我们考虑反向处理,也就是说最短路径上的点一定在以终点为根的搜索树上,并且这些点的所有出边一定也在这棵树上。所以考虑dfs/bfs搜 阅读全文
posted @ 2019-04-16 21:54 锦依卫Lijilai 阅读(104) 评论(0) 推荐(0)
摘要:高精度,就是实现两个大整数四则运算的算法。其实本质就是模拟我们小学学过的竖式运算。原理可以说是非常简单,但是写起代码就不太好写了。 1 #include<cstdio> 2 #include<cmath> 3 #include<cstring> 4 #include<string> 5 #inclu 阅读全文
posted @ 2019-04-14 11:11 锦依卫Lijilai 阅读(195) 评论(0) 推荐(0)
摘要:emmmm没什么想说的,随便放个图吧23333(逃~ 阅读全文
posted @ 2019-04-13 21:21 锦依卫Lijilai 阅读(342) 评论(0) 推荐(0)
摘要:这是一道考Floyd本质的题。 回忆一下Floyd的原理,三层循环,最外层循环枚举的是中转点,也就是用两点到中转点距离之和来更新最短路。然后来看下题目,重建时间是按照从小到大排序的,也就是说,当第i个村庄刚重建完成时,前i个村庄全部重建完成,而后面的都没有重建完成。那么在枚举中转点的时候就可以在线操 阅读全文
posted @ 2019-04-12 17:39 锦依卫Lijilai 阅读(99) 评论(0) 推荐(0)
摘要:原题全英文的,粘贴个翻译题面,经过一定的修改。 跟所有人一样,农夫约翰以宁教我负天下牛,休叫天下牛负我的伟大精神,日日夜夜苦思生财之道。为了发财,他设置了一系列的规章制度,使得任何一只奶牛在农场中的道路行走,都要向农夫约翰上交过路费。 农场中由N(1 <= N <= 250)片草地(标号为1到N), 阅读全文
posted @ 2019-04-12 13:11 锦依卫Lijilai 阅读(99) 评论(0) 推荐(0)
摘要:emmmm这个题看起来非常复杂,实际上仔细一分析发现到一个点最短路的个数就是所有前驱最短路个数之和。如果在图上表示也就是以1为根的bfs搜索树,一个点的最短路个数等于每一个能够向它扩展的所有点的最短路个数之和。SPFA可以实现bfs。 先看代码吧 我们用ans数组存储每个点最短路个数。 阅读全文
posted @ 2019-04-11 19:33 锦依卫Lijilai 阅读(114) 评论(0) 推荐(0)
摘要:按照题意,显然可以列出同余方程,k即为所求天数,再将其化为不定方程 ,那么对这个方程用扩展欧几里德算法即可得出k,q的一组解,但是方程有解的充要条件是(m – n) 和L不同时为零并且x – y是m – n和L的因子,扩展欧几里德算出的解才是方程的解 。 阅读全文
posted @ 2019-04-11 18:56 锦依卫Lijilai 阅读(107) 评论(0) 推荐(0)
摘要:先说下暴力做法,如果[l1,r1]和[l2,r2]子串相等等价于两个区间内每个数对应相等。那么可以用并查集暴力维护,把对应相等的数的位置维护到同一个集合里去,最后答案其实就是把每个集合可以放的数个数乘起来就行了。注意:最高位不为0,如果有num个集合,则答案为9 * 10^(num – 1)。 暴力 阅读全文
posted @ 2019-04-11 18:52 锦依卫Lijilai 阅读(117) 评论(0) 推荐(0)
摘要:原题链接:http://www.lightoj.com/volume_showproblem.php?problem=1128 原题是英文题面,大概翻译了一下: 最大的祖先 树是一个连通的无环图,在这个问题中给出一个有根树,每个点有一个权值,每个点的权值严格的大于它父亲的权值。现在给出一个点以及一个 阅读全文
posted @ 2019-04-11 18:46 锦依卫Lijilai 阅读(141) 评论(0) 推荐(0)
摘要:严格次小生成树,关键是“严格”,如果是不严格的其实只需要枚举每条不在最小生成树的边,如果得到边权和大于等于最小生成树的结束就行。原理就是因为Kruskal非常贪心,只要随便改一条边就能得到一个非严格的次小生成树。然而是严格的QAQ,于是得搞点别的东西来实现“严格”,维护个次大值就行。依次枚举每条边, 阅读全文
posted @ 2019-04-11 13:24 锦依卫Lijilai 阅读(158) 评论(0) 推荐(0)