算法
XBCoder
小打小闹,请勿吐槽
展开
-
[位压] 高精度加法
这算是本BLOG的第一篇文章吧,算法这一块荒废了很长时间,,这份代码刚开始写的时候,刚输完main时,整个人都是蒙的,不知该如何往下走。好在成功写完了。由于没啥状态,所以这个高精+功能非常简单,只能+,不支持负数。 这里说一下位压的思想,一般的评测机都是32位的,所以一个int能储存32位数据。再来看一看0 ~ 9,二进制分别对应0000~1001,所以一个4位二进制正好可以存储,...原创 2018-07-29 15:56:04 · 464 阅读 · 1 评论 -
数论 最大公约数 最小公倍数
最大公约数之前,我们学过约数,这次,我们需要找到2个数a,ba,ba, b的最大的公约数,我们设d=gcd(a,b)d=gcd(a,b)d = gcd (a,b)为a,ba,ba,b的最大公约数所以有d|ad|ad | a,d|bd|bd | b,设a=kb+ra=kb+ra = kb + r,其中k为整数 所以r=a−kbr=a−kbr = a - kb,根据整除的性质,可得d|rd|...原创 2018-09-16 23:15:47 · 172 阅读 · 0 评论 -
贪心 字典序最小问题
贪心 字典序最小问题题目大意:给你一个长为N的字符串S,并提供下列2种操作把S的第一个字母添加到字符串T的末尾,并从S中删除把S的最后一个字母添加到字符串T的末尾,并从S中删除让你构造出字典序最小的字符串T思路因为每次我们能直接考虑的只有S的首尾字母,所以每次添加到T中的不是第一个就是最后那一个,没有别的方法,并且都是添加到T的末尾根据字典序的定义,越靠前的字母越小,...原创 2018-09-16 21:23:11 · 495 阅读 · 0 评论 -
贪心 区间选择
贪心 区间选择区间选择大意:有n个区间,区间可以重叠,要求你选出最多的满足要求的区间,要求这些区间彼此不能重叠思路首先,我们可以把总区间分成两个部分(从中间某一点一批为二),左边那部分为已定区域,右边为待定区域已定区域:这个区域的区间都已经选择完毕,并且已经得到最优解 : max_待定区间:这个区间还没有被考虑到。在已定区间已经得到最优解时,我们需要整体最优,明显有这样一...原创 2018-09-16 20:47:06 · 170 阅读 · 0 评论 -
质因数分解
质因数分解Pollard Rho因数分解 1975年,John M. Pollard提出了第二种因数分解的方法,Pollard Rho快速因数分解。该算法时间复杂度为O(n^(1/4))。 百度或许比我讲的清楚#include <stdio.h>int main (){ int n,k=2; scanf("%d",&a原创 2018-09-08 10:52:02 · 199 阅读 · 0 评论 -
二叉查找树
二叉查找树开篇前的一水顺着书本上的顺序,,看完哈希表,算是复习了 二叉搜索树…… 一开始还在想这个东西思想这么简单的实现应该不难,结果睡了一觉起来发现有些操作还真写不来,,果断重新学习…… 还真发现了好多快忘光的东西了 比如各种遍历顺序……要不是这次还真不一定能想起来言归正传。。。什么是二叉搜索树首先这东西是一棵二叉树,但是需要注意的是,这只是一棵最普通的二叉树,...原创 2018-09-02 19:50:42 · 72 阅读 · 0 评论 -
埃氏筛法
埃氏筛法对我来说,这是个很陌生的名词,,听都没听说过(是的我太菜比了) 但是当我看到代码后……woc这个不就是……没错,以前写的最多的素数筛原理,素数的倍数都是合数,利用这个性质……,把所有的合数筛去,剩下的就都是素数了代码:#include <iostream>#include <math.h>using namespace std;boo...原创 2018-09-07 22:45:14 · 378 阅读 · 0 评论 -
并查集 启发式合并详解 + C代码实现
并查集 启发式合并并查集,这是个比较简单的东西,用森林模拟集合,集合合并则是两颗树的合并,查找集合则是寻找某棵树的根节点因为不可避免的会遇到各种合并操作,,所以可能导致某棵树的深度较大,,对应的则出现了并查集的路径压缩还有启发式合并这里不将路径压缩,主要是这个东西比较普及了,而且理解起来不难。所以直接进入正题:启发式合并启发式合并第一次看到这个名称,实在刘汝佳的书上,当时还...原创 2018-08-30 19:46:58 · 364 阅读 · 0 评论 -
二叉堆详解 及 C代码实现
二叉堆[注] 本文以小根堆为演示 存储二叉堆,本质上是一棵二叉树——一棵完全二叉树 完全二叉树 是 效率很高的数据结构,完全二叉树 是由 满二叉树 而引出来的。对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。因为有这个性质,,我们可以很方便的存储一棵二叉堆。假设存在一个数组array[]...原创 2018-08-30 19:00:19 · 267 阅读 · 0 评论 -
Floyd算法
Floyd最短路算法当初学这个算法的时候,都说是DP思想……但是当时学的匆匆,具体是怎么个DP法确实不大清楚,但是理解这个东西,一旦出了偏差,代码就会莫名爆炸……其实对于最短路的算法,最重要的步骤其实就是松弛,比如Dijkstra算法,贪心策略就是,每次让到源点距离最近的那个点,去松弛其他的点。而弗洛伊德算法的基操也是松弛操作,但和单源最短路径的只松弛源点到其他点的距离不同,Floyd算法每...原创 2018-10-19 23:24:50 · 2334 阅读 · 0 评论