ACM&OI 基础数学算法专题】的更多相关文章

[前言] 本人学习了一定时间的算法,主要精力都花在数学类的算法上面 而数学类的算法中,本人的大部分精力也花费在了数论算法上 此类算法相对抽象,证明过程比较复杂 网络上的博客有写得非常好的,但也有写得不明所以的 因此,本人特此开一个新的专题,专门负责讲解一些比较基础的数学类算法 但本人知识面也有限,部分算法也还未掌握.因此,希望本专题也能促进本人学习这些算法 下面做出对更新的一些规定: 基本上保持每日更新一贴 对标注(已完结)的贴子,表明本贴子已完结 对标注(正在更新)的贴子,表明正在更新本贴 对…
ACM&OI 基础数学算法专题 一.数论基础 质数及其判法 (已完结) 质数的两种筛法 (已完结) 算数基本定理与质因数分解 (已完结) 约数与整除 (已完结) 整除分块 (已完结) 最大公约数.最小公倍数的两种求法 (已完结) 同余与剩余类 (已完结) 互质与欧拉函数 (已完结) 快速幂 (已完结) 费马小定理与威尔逊定理 (已完结) 欧拉定理及其推论.普适形式 裴属定理与拓展欧几里得算法 乘法逆元的求法 乘法逆元的线性筛法 线性同余方程 拉格朗日插值到中国剩余定理 拓展中国剩余定理 二.迪利…
前段时间在看一本01年出的旧书<effective Tcp/Ip programming>,这个算法专题中断了几天,现在继续写下去. Introduction 对于单向链表(singly linked list),每个节点有⼀个next指针指向后一个节点,还有一个成员变量用以储存数值:对于双向链表(Doubly LinkedList),还有一个prev指针指向前一个节点.与数组类似,搜索链表需要O(n)的时间复杂度,但是链表不能通过常数时间读取第k个数据.链表的优势在于能够以较⾼的效率在任意位…
20170529-2枚举算法专题练习 题解: http://www.cnblogs.com/ljc20020730/p/6918360.html 青岛二中日期 序号 题目名称 输入文件名 输出文件名 时限 内存 算法 难度 分类 081113 1 最大矩形 rectangle.in rectangle.out 1s 256MB 枚举 1 02枚举 081031 2 回文 palin.in palin.out 1s 256MB 枚举.优化 1 02枚举 081008 3 问题的设置 problem…
系列索引: NOIp 图论算法专题总结 (1) NOIp 图论算法专题总结 (2) NOIp 图论算法专题总结 (3) 最短路 Floyd 基本思路:枚举所有点与点的中点,如果从中点走最短,更新两点间距离值.时间复杂度 \(O(V^3 )\). int n, m, f[N][N]; memset(f, 0x3f, sizeof(f)); for (int i=1, a, b, w; i<=m; i++) { scanf("%d%d%d", &a, &b, &…
系列索引: NOIp 图论算法专题总结 (1) NOIp 图论算法专题总结 (2) NOIp 图论算法专题总结 (3) 树链剖分 https://oi-wiki.org/graph/heavy-light-decomposition/ qRange:将树从 \(x\) 到 \(y\) 结点最短路径上所有节点的值都加上 \(val\) updRange:求树从 \(x\) 到 \(y\) 结点最短路径上所有节点的值之和 qSon:将以 \(x\) 为根节点的子树内所有节点值都加上 \(val\)…
系列索引: NOIp 图论算法专题总结 (1) NOIp 图论算法专题总结 (2) NOIp 图论算法专题总结 (3) 网络流 概念 1 容量网络(capacity network)是一个有向图,图的边 \((u, v)\) 有非负的权 \(c(u, v)\),被称为容量(capacity). 图中有一个被称为源(source)的节点和一个被称为汇(sink)的节点.图中每条边称为弧(arc). 实际通过每条边的流量记为 \(f(u, v)\). 残量网络(residual network)是一…
哈喽,大家好,我是编程熊,双非逆袭选手,字节跳动.旷视科技前员工,ACM亚洲区域赛金牌,保研985研究生,分享算法与数据结构.计算机学习经验,帮助大家进大厂~ 公众号:『编程熊』 文章首发于: ACM金牌选手算法讲解<线性表>!戳这里! 线性表 LeetCode刷题过程中,常常用到的线性表主要包括以下四个重要的数据结构: 数组.链表.栈.队列. 下面将分别讲解数组.链表.栈和队列. 线性表概述 线性: 这里的线性是逻辑上的连续,而非物理存储的连续. 存储的数据: 线性表是一个有n个相同类型数据…
搞了半天八数码弄不出来就只好来打题解  这道题是在搜索a碰到的(链接: http://pan.baidu.com/s/1jG9rQsQ ) 感觉题目最大亮点就是这英文简写"ni", 真是令人感慨出题老师的才华啊  好了,废话不多说  题目内容如下(闲烦请无视之,下下方有简单的介绍): [问题描述] 贝 西(Bessie)在卡摩洛遇到了棘手的情况:她必须穿越由Ni骑士把守的森林. 骑士答应Bessie只要 Bessie 能给他们带来一丛灌木就能安全穿越森林.时间宝贵,Bessie 必须尽…
原文:http://972169909-qq-com.iteye.com/blog/1184514 题目地址:这里. 1)求图中所有环的总长度(环的长度不唯一)的最小值.当无法得到完备匹配时说明环不存在. 第三题:http://acm.hdu.edu.cn/showproblem.php?pid=1853 直接建图,注意有重边哦! if (-c > w[a][b])     w[a][b] = -c; 当木有完美匹配输出-1 第四题:http://acm.hdu.edu.cn/showprobl…
        到了大四以后越来越意识到基础知识的重要性,很多高屋建瓴的观点与想法都是建立在坚实的基础之上的, 招式只有在强劲的内力下才能发挥最大的作用,曾经有段时间我有这样的想法:我们出去以后和其他人到底有什 么优势呢?机械专业还好,比较重在平时的积累,但是对于电子信息专业呢?出去搞单片机,别人的经验比你丰 富可不是一点点,单纯的STM32,别人的实践也不会比你差.别人的项目比你做的也多.        后来我渐渐明白,这些STM32,51单片机都只是招式而已,在大学关键是修内力.      …
考完期末又双叒回来刷普及题辣$kk$ 然后放个链接趴还是$QwQ$ [X]$A$ 因为是嘤文($bushi$所以放个题意趴$QwQ$ 就汉诺塔问题,只是说有四个塔$A,B,C,D$,要求输出有1-12个盘子时的最少步数$QwQ$ $umm$解法题目都给了昂$QwQ$,大致意思就说,可以先把$n-k$个盘子用四个塔的算法移到$B$,然后用三个塔的算法把剩下$k$个移到$D$,然后再用四个塔的算法把那$n-k$个塔从$B$移到$D$,对于$n\leq 12$可以保证一定是最优解$QwQ$ 然后就是无…
今天是算法数据结构专题的第33篇文章,我们一起来聊聊最短路问题. 最短路问题也属于图论算法之一,解决的是在一张有向图当中点与点之间的最短距离问题.最短路算法有很多,比较常用的有bellman-ford.dijkstra.floyd.spfa等等.这些算法当中主要可以分成两个分支,其中一个是bellman-ford及其衍生出来的spfa,另外一个分支是dijkstra以及其优化版本.floyd复杂度比较高,一般不太常用. 我们今天的文章介绍的是bellman-ford以及它的衍生版本spfa算法.…
一.模板 算法解析:http://www.felix021.com/blog/read.php?2040 *主要用来解决一个字符串中最长回文串的长度,在O(n)时间内,线性复杂度下,求出以每个字符串为中心的最长回文,奇数回文跟偶数回文一起考虑了 S $ # # # # # # # # # P 最后所求的值就是max(P[i]-) //输入,并处理得到字符串s,s[0]=$ void getp() { ], mx = , id = ; memset(p, , sizeof(p)); ; s[i]…
以杭电2544题目为例 最短路 Problem Description 在每年的校赛里,全部进入决赛的同学都会获得一件非常美丽的t-shirt. 可是每当我们的工作人员把上百件的衣服从商店运回到赛场的时候,却是非常累的.所以如今他们想要寻找最短的从商店到赛场的路线.你能够帮助他们吗?   Input 输入包含多组数据. 每组数据第一行是两个整数N.M(N<=100.M<=10000).N表示成都的大街上有几个路口,标号为1的路口是商店所在地.标号为N的路口是赛场所在地,M则表示在成都有几条路.…
这个算法适用于求单源最短路径,从一点出发,到其余个点的最短路径. 算法要点: 1.用二维数组存放点到点的距离-----不能相互到达的点用MAX代替距离 2.用dis数组存放源点到任意其他一点的距离----dis[5]表示源点到5点的距离为dis[5]中的值 3.用book数组记录已经确定最小dis的点 4.用index和indexNumber存放估计值的点 5.从源点到这个点如果比中间加上估计值的点还要长,就松弛 算法模型: for(循环N次) { for(循环找到估计值点) { 估计值点是现在…
这个算法也是求单源最短路径用的,但是这个算法可以解决Dijkstra不能解决的负权边问题. 算法要点: 1.用dis存放源点到任意一点的距离. 2.用三个数组存放输入的点到点以及点到点的距离,x[i],y[i],x_y_dis[i]其中表示x[i]到y[i]的距离为x_y_dis[i]. 3.循环边数,比较dis[y[i]]和dis[x[i]]+ x_y_dis[i],然后更新dis[y[i]],意思和Dijkstra很像,就是源点到y点的距离如果大于源点到x的距离加上x到y的距离就更新.//注…
---恢复内容开始--- tarjan算法介绍: 一种由Robert Tarjan提出的求解有向图强连通分量的线性时间的算法.通过变形,其亦可以求解无向图问题 桥: 割点: 连通分量: 适用问题: 求解(有向图/无向图)的,桥,割点,环,回路等问题 整体思想: 如果我们欲要求解,桥的个数,割点的个数,环的数目,归根结底,是分析清楚一个图 有几个 环,每个环包含哪些节点,那些边. 而 tarjan算法就是做的这件事情,通过dfs遍历每一条边和节点,算出有几个环,每个环中有哪些节点.那么是如何做的呢…
BST 以下BST的定义来自于Wikipedia: Binary Search Tree, is a node-based binary tree data structure which has the following properties: The left subtree of a node contains only nodes with keys less than the node's key. The right subtree of a node contains only…
题目: http://www.cnblogs.com/ljc20020730/p/6918328.html 评测器:cena 评测记录: 1.OneMoreRectangle 一个矩形 ●如果任意枚举矩形坐标,显然不可行.数组太大,开不下!●我们注意到,如果我们放入了矩形,矩形周围并没有其它矩形,那么稍微移动这个矩形,不会改变答案.显然,一定存在一种方案,使得放入的矩形的边界与某些已知矩形边界重合.我们不妨规定,放入的矩形下边界必须与已知矩形重合.左边界必须与已知矩形重合. 所以就可以做了 ty…
数据结构 栈,队列,链表 哈希表,哈希数组 堆,优先队列 双端队列 可并堆 左偏堆 二叉查找树 Treap 伸展树 并查集 集合计数问题 二分图的识别 平衡二叉树 二叉排序树 线段树 一维线段树 二维线段树 树状数组 一维树状数组 N维树状数组 字典树 后缀数组,后缀树 块状链表 哈夫曼树 桶,跳跃表 Trie树(静态建树.动态建树) AC自动机 LCA和RMQ问题 KMP算法 图论 基本图算法图 广度优先遍历 深度优先遍历 拓扑排序 割边割点 强连通分量 Tarjan算法 双连通分量 强连通分…
BFS 广度优先搜索一层一层地进行遍历,每层遍历都是以上一层遍历的结果作为起点,遍历一个距离能访问到的所有节点.需要注意的是,遍历过的节点不能再次被遍历. 第一层: 0 -> {6,2,1,5} 第二层: 6 -> {4} 2 -> {} 1 -> {} 5 -> {3} 第三层: 4 -> {} 3 -> {} 每一层遍历的节点都与根节点距离相同.设 di 表示第 i 个节点与根节点的距离,推导出一个结论:对于先遍历的节点 i 与后遍历的节点 j,有 di &l…
归并排序就是一个用分治法的经典例子,这里我用它来举例描述一下上面的步骤: 1.归并排序首先把原问题拆分成2个规模更小的子问题. 2.递归地求解子问题,当子问题规模足够小时,可以一下子解决它.在这个例子中就是,当数组中的元素只有1个时,自然就有序了. 3.最后,把子问题的解(已排好序的子数组)合并成原问题的解. 当待排序的序列长度为1时,递归"开始回升",在这种情况下不要做任何工作,因为长度为1的每个序列都已排好序.归并排序算法的关键操作是"合并"步骤中两个已排序序列…
二分查找实现 非常详细的解释,简单但是细节很重要 https://www.cnblogs.com/kyoner/p/11080078.html 正常实现 Input : [1,2,3,4,5] key : 3 return the index : 2 public int binarySearch(int[] nums, int key) { int l = 0, h = nums.length - 1; while (l <= h) { int m = l + (h - l) / 2; if…
排序 快速排序 用于求解 Kth Element 问题,也就是第 K 个元素的问题. 可以使用快速排序的 partition() 进行实现.需要先打乱数组,否则最坏情况下时间复杂度为 O(N2). 堆排序 用于求解 TopK Elements 问题,也就是 K 个最小元素的问题.可以维护一个大小为 K 的最小堆,最小堆中的元素就是最小元素.最小堆需要使用大顶堆来实现,大顶堆表示堆顶元素是堆中最大元素.这是因为我们要得到 k 个最小的元素,因此当遍历到一个新的元素时,需要知道这个新元素是否比堆中最…
1. 分配饼干 455. 分发饼干 题目描述:每个孩子都有一个满足度 grid,每个饼干都有一个大小 size,只有饼干的大小大于等于一个孩子的满足度,该孩子才会获得满足.求解最多可以获得满足的孩子数量. class Solution { public int findContentChildren(int[] g, int[] s) { Arrays.sort(g); Arrays.sort(s); int i=0,j=0; while(i<g.length && j<s.l…
算法思想 双指针 167. 两数之和 II - 输入有序数组 双指针的典型用法 如果两个指针指向元素的和 sum == target,那么得到要求的结果: 如果 sum > target,移动较大的元素,使 sum 变小一些: 如果 sum < target,移动较小的元素,使 sum 变大一些. 数组中的元素最多遍历一次,时间复杂度为 O(N).只使用了两个额外变量,空间复杂度为 O(1). class Solution { public int[] twoSum(int[] numbers…
\(EK\) 算法模板 #include <iostream> #include <queue> #include<string.h> using namespace std; #define arraysize 201 int maxData = 0x7fffffff; int capacity[arraysize][arraysize]; //记录残留网络的容量 int flow[arraysize]; //标记从源点到当前节点实际还剩多少流量可用 int pre[…
1.[HDU 3068]最长回文 题意:求一个字符串(len<=110000)的最长回文串 解题思路:一般解法是manacher,但是这一题用hash也是可以ac的 假设当前判断的是以i为中心偶数最长回文串,那么s[2*i+1-k……i]与s[i+1……k]的哈希值必定相同 假设当前判断的是以i为中心奇数最长回文串,那么s[2*i-k……i-1]与s[i+1……k]的哈希值必定相同 用二分求出相应的k #include <iostream> #include <algorithm&…
Happy 2004 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Description Consider a positive integer X,and let S be the sum of all positive integer divisors of 2004^X. Your job is to determine S modulo 29 (the rest of the d…