![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法学习
文章平均质量分 58
9ack!?
在校苦逼男
展开
-
最近公共祖先问题四种常见解法
最近公共祖先问题LCA定义LCA指树中两个节点最近的一个公共祖先节点。利用LCA可以求出树上任意两点之间的距离,假设树上所有节点到根节点的距离都存在dist数组里,则两个节点之间的距离为:dist[u]+dist[v]-2*dist[lca]dist[0] = 0;dist[1] = dist[2] = 1;dist[3] = dist[4] = dist[5] = dist[6] = 2;dist[7] = dist[8] = dist[9] = 3;加入求解节点7和节点4之间的距离,原创 2022-03-12 20:53:48 · 3997 阅读 · 0 评论 -
马拉车算法详解, C++代码实现
算法介绍马拉车算法是用来在一个字符串中寻找最长回文串(正着读和反着读都相同的字符串)的一种算法。该算法运用了动态规划的思想,将寻找最长回文串算法的时间复杂度降低到了线性。算法原理对于一个字符串要判断它是否为回文串要分为字符串长度为奇数或者偶数两种情况,为了简化做法,我们进行如下的操作:在字符串的两端和每两个字符中间添加一个 ‘#’ (或者任意一个一定不会在字符串中出现的字符, 通常就是 ‘#’ 啦)再在字符串的开始和结尾放置字符串开始和结束的标识符。上述操作后拓展出来的字符串的长度一定是奇数原创 2022-01-20 23:40:40 · 1591 阅读 · 0 评论 -
HDU-P2289:Cup[二分答案+数学]
HDU-P2289:Cup[二分答案+数学]题目Problem DescriptionThe WHU ACM Team has a big cup, with which every member drinks water. Now, we know the volume of the water in the cup, can you tell us it height?The radius of the cup’s top and bottom circle is known, the cup’原创 2021-05-30 20:38:49 · 118 阅读 · 3 评论 -
HDU-P1176:免费馅饼[动态规划]
HDU-P1176:免费馅饼[动态规划]题目题目链接Problem Description都说天上不会掉馅饼,但有一天gameboy正走在回家的小径上,忽然天上掉下大把大把的馅饼。说来gameboy的人品实在是太好了,这馅饼别处都不掉,就掉落在他身旁的10米范围内。馅饼如果掉在了地上当然就不能吃了,所以gameboy马上卸下身上的背包去接。但由于小径两侧都不能站人,所以他只能在小径上接。由于gameboy平时老呆在房间里玩游戏,虽然在游戏中是个身手敏捷的高手,但在现实中运动神经特别迟钝,每秒种只有在原创 2021-05-25 09:12:29 · 106 阅读 · 0 评论 -
并查集学习笔记
并查集什么是并查集并查集是一种树形的数据结构,可以处理不相交集合之间的查询和合并的问题。如何实现每个集合用一棵树来表示,树的根节点的编号就是整个集合的编号,每个节点存放其父节点的下标,下标和其指示的父节点相等时表明该节点是根节点。基本并查集的代码实现#include <iostream>#include <cstdio>const int MAXN = 10001; //并查集中的最大元素个数using namespace std;int pre[MAXN];原创 2021-05-24 17:22:16 · 64 阅读 · 0 评论 -
HDU-P1856:More is better[并查集]
HDU-P1856:More is better[并查集]题目题目链接Problem DescriptionMr Wang wants some boys to help him with a project. Because the project is rather complex, the more boys come, the better it will be. Of course there are certain requirements.Mr Wang selected a roo原创 2021-05-24 00:54:21 · 54 阅读 · 0 评论 -
HDU-P5248:序列变换[二分答案]
HDU-P5248:序列变换[二分答案]题目题目在这里Problem Description给定序列A={A1,A2,…,An}, 要求改变序列A中的某些元素,形成一个严格单调的序列B(严格单调的定义为:Bi<Bi+1,1≤i<N)。我们定义从序列A到序列B变换的代价为cost(A,B)=max(|Ai−Bi|)(1≤i≤N)。请求出满足条件的最小代价。注意,每个元素在变换前后都是整数。Input第一行为测试的组数T(1≤T≤10).对于每一组:第一行为序列A的长度N(1≤原创 2021-05-22 12:05:45 · 458 阅读 · 0 评论 -
OpenOJ-P1166:拨钟问题[枚举]
OpenOJ-拨钟问题[枚举]题目题目链接有9个时钟,排成一个3*3的矩阵。|-------| |-------| |-------|| | | | | | ||---O | |---O | | O || | | | | ||-------| |-------| |-------| A B C原创 2021-05-22 10:24:09 · 228 阅读 · 0 评论 -
HDU-P4911:Inversion[归并排序]
HDU-4911-Inversion[归并排序]题目题目链接Problem Descriptionbobo has a sequence a1,a2,…,an. He is allowed to swap two adjacent numbers for no more than k times.Find the minimum number of inversions after his swaps.Note: The number of inversions is the number of原创 2021-05-21 18:24:00 · 137 阅读 · 0 评论 -
素数筛学习笔记
素数筛埃氏筛法埃氏筛法(埃拉托色尼筛法)是一种用来求所有小于N的素数的方法。把从2(最小的素数)开始的某一范围的正整数从小到大按顺序排列,逐步筛掉非素数留下素数。例如一组数:2、3、4、5、6、7、8、9、10、11、12、13、14、15、16首先选择最小的一个没有被选择过的数字,表明其为当前最小的素数。然后从这一列数字中把所有该数字的倍数划掉:2、3、(4)、5、(6)、7、(8)、9、(10)、11、(12)、13、(14)、15、(16)然后重新选择数字并重复进行上面的操作。当选择原创 2021-05-19 21:22:06 · 147 阅读 · 0 评论