ACM算法
文章平均质量分 55
NGUP_LEE
毕业之后找到了一份还可以的工作,就是少了一些上学时学习的激情,上班就已经搞得自己精疲力尽,偶尔点开自己的博客,看到自己的学习笔记还可以帮助到不少的同学感到很开心。
加油,陌生人,如果你是为了挣钱,请努力,互联网不会辜负你,最重要的是你要考虑清楚自己的方向~
展开
-
字节跳动面试初体验
第一次面试太紧张了,导致简单题目都没有写出来,其实题目不难,但是面试官会要求对代码进行优化对于我这种基础差的人来说,一下就给我整不会了…1.输出一个数组index,输出在数组中没出现过的最小正整数样例输入4 5 6 -1 5输出1我的思路://C++int flag[1000] = {0};int k;while(~scanf("%d",&k)){ flag[k] = 1;}for (int i=1;i<1000;i++){ if(flag[i]==0原创 2021-11-17 19:26:16 · 416 阅读 · 0 评论 -
半年前的稿子——单调队列
单调队列是指:队列中元素之间的关系具有单调性,而且,队首和队尾都可以进行出队操作,只有队尾可以进行入队操作。顾名思义就是一个有规律的队列,这个队列的规律是:所有在队列里的数都必须按递增(或递减)的顺序列队,如果真有这么一个队列,那么队列的头是不是就是最小(或最大)的呢?我们简单了解一些单调队列的思想,假如你在饭堂打饭时,有个人人高马大,急匆匆跑过来,看排了这么一长串队,心中急躁,从队列最后的一个人开始,看见好欺负的就赶走,自己站着,直到干不过的就停下,这样排在前面的认肯定是最高大威猛的。这个队伍就可以原创 2021-08-10 17:26:00 · 108 阅读 · 0 评论 -
算法基础之贪心算法
简介贪心算法(greedy algorithm),是用计算机来模拟一个“贪心”的人做出决策的过程。这个人很贪婪,每一步行动总是按某种指标选取最优的操作。而且他目光短浅,总是只看眼前,并不考虑以后可能造成的影响。贪心算法只有在通过局部最优解可以得到全局最优解时才可以使用可想而知,并不是所有的时候贪心法都能获得最优解,所以一般使用贪心法的时候,都要确保自己能证明其正确性。当一个问题的最优解包含其子问题的最优解时,称此问题具有最优子结构性质。基本思路建立数学模型来描述问题;把求解的问题分成若干原创 2020-11-30 18:12:57 · 1010 阅读 · 1 评论 -
差分及前缀和基础和例题总结
差分、前缀和有着特殊的关系,也是一种入门算法首先考虑这样一个问题:有 N 个的正整数放到数组 A 里,现在要求一个新的数组 B,新数组的第 i 个数 B[i]是原数组 A 第 0 到第 i 个数的和。前缀和前缀和想必大家都知道,给定一数组c[i],用另外一数组sum[n]来存储c[1]-c[n]的和,这样在求任意区间的和的时候,就非常的快捷了具体递推为sum[i] = c[i-1]+c[i]差分什么是差分?差分是两个元素的差值,我们用一个新的数组a[i]记录差分的值,数组 a 叫做 差原创 2020-09-10 19:56:44 · 518 阅读 · 0 评论 -
快速幂算法
主要思想3^10=333333333*3//尽量想办法把指数变小来,这里的指数为103^10=(3X3)(3X3)(3X3)(3X3)(3X3)3^ 10=(3*3)^53^ 10=9^5//此时指数由10缩减一半变成了5,而底数变成了原来的平方,求310原本需要执行10次循环操作,求95却只需要执行5次循环操作,但是310却等于95,我们用一次(底数做平方操作)的操作减少了原本一半的循环量,特别是在幂特别大的时候效果非常好,例如2^ 10000 = 4^5000,底数只是做了一个小小的平方操原创 2020-07-22 11:49:07 · 170 阅读 · 0 评论 -
链式前向星存图法
之前在学习最大流的时候,EK算法使用的是一个二维数组,但是对于稀疏图,二维数组比较浪费空间,对于稠密图,EK算法又解决不了,使用Dinic的时候需要一种比较好的存图方法,下面就介绍一下存图利器——链式前向星对于存图的各种数据结构,复杂度如下邻接矩阵O(1)(查询一条边) O(n)枚举出边 O(N*N)空间复杂度前向星O(n)(查询一条边) O(n)枚举出边 O(n)空间复杂度 (预处理时间复杂度(O(NlgN)))链式前向星O(n)(查询一条边.原创 2020-06-02 21:04:39 · 317 阅读 · 0 评论 -
快速入门树状数组~
不知道有多少同学和我一样是先了解的线段树,记得当时看了好几天的博客和板子题,现在到数据结构学习树状数组,我一看哎,他能解决的问题类型和线段树是一样的哎,那我为什么还要先学线段树呢,awsl~其实他们是有区别的,部分问题只能能由线段树解决,下面我就带大家一起快速入门树状数组以及他和线段树的区别。1.什么是树状数组顾名思义树状数组就是模拟树形结构根据一定的规律建造的数组,那么为什么不直接建树呢?因为了解线段树的都知道线段树的模板代码量是比较大的,如果我们能用模拟的方法解决问题,效率会高很多。.原创 2020-05-22 18:10:53 · 189 阅读 · 0 评论 -
网络流入门,EK算法和Dinic算法求最大流
文章目录1.什么是网络流1.1网络流的相关定义1.2相关性质1.3求最大流的问题模型2.如何求最大流3.关于反向边4.EK算法和Dinic算法4.1EK(Edmonds-Karp)算法4.2Dinic算法1.什么是网络流网络流(英语:Network flow)是指在一个每条边都有容量(Capacity)的有向图分配流,使一条边的流量不会超过它的容量。通常在运筹学中,有向图称为网络。顶点称为节...原创 2020-03-29 16:02:55 · 887 阅读 · 1 评论 -
适合入门的线段树基础
线段树其实不难,如果讲解时能用到生动形象的例子,那么谁都可以快速入门线段树,这里我费劲心血查遍了网上大部分关于线段树的博客,通过自己感悟总结,呕心沥血写下这篇博客~来年的今天我就可以轻松让我的学弟学妹快速线段树了~哈哈原创 2020-03-16 15:12:05 · 593 阅读 · 0 评论 -
BFS、DFS算法原理及代码模板(附模板题)
前言BFS、DFS这两周搜索算法都是对图的遍历,从图中某点出发,按照某种方法对图的所有顶点进行访问,每个点仅访问一次。因为图对于树而言相对复杂,其中的任意顶点都可能与其他顶点相邻,所以在图的遍历中必须记录已经被访问过的点。根据搜索路径的不同,我们可以将遍历图的方法分为两种:广度优先搜索和深度优先搜索。实现bfs和dfs都需要解决的一个问题就是如何存储图。一般有两种方法:邻接矩阵和邻接表。这...原创 2020-03-09 21:25:10 · 6157 阅读 · 1 评论 -
总结一下大学生必须知道的的排序算法
文章目录说明1.冒泡排序(Bubble Sort)1.1基本思想1.2算法描述1.3复杂程度1.4代码实现1.5冒泡排序的优化2.选择排序(Selection Sort)2.1基本思想2.2算法描述2.3复杂程度和稳定性2.4代码实现2.5代码优化3.插入排序(Insertion Sort)3.1基本思想3.2算法描述3.3复杂程度3.4代码实现3.5代码优化3.5.1二分(折半)插入排序3.5....原创 2020-02-21 13:17:25 · 984 阅读 · 0 评论 -
并查集入门
前几天学长跟我们讲了并查集的原理和方法,我又看了一些博客,做了几道模板题,感觉还不错,来简单介绍一下并查集的一些东西并查集,顾名思义就是合并、查找的一系列操作。当今社会人脉极为重要,我们出门在外很多时候靠的就是朋友互帮互助,当你和一个不认识的人发生了矛盾,因为考虑到经济原因不知道要不要动手的时候,你们突然发现有一个共同的朋友B,朋友的朋友就是朋友,之后化干戈为玉帛。当然,由于朋友太多,有时候你...原创 2020-03-06 16:32:27 · 179 阅读 · 0 评论