自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

ACfun

大家好!我是ACfun,欢迎大家来到我的blog。

  • 博客(182)
  • 资源 (2)
  • 收藏
  • 关注

原创 Java集合框架源码详解系列(一)

之前写过关于 C++ STL 的四篇文章,现在开始写一下关于Java集合框架的文章,该系列博客将会写很长时间。不管是C++的STL也好,Java的集合框架也好,这两者其实都是将一些基本的数据结构进行了封装实现,从现在开始博主将带领大家遨游在Java集合框架的源码世界,准备好了吗?Go!!!

2021-05-30 22:00:05 3002 36

原创 LeetCode 993. 二叉树的堂兄弟节点——每日一题

本题主要考察了二叉树的遍历,可以使用 宽度优先搜索 在遍历的同时使用 map 记录每个节点的值、深度以及其父节点。遍历完成之后直接进行比较即可。

2021-05-17 16:46:08 24

原创 MyBatis项目实战(2)实现插入操作

本篇主要讲述如何在上一篇博客 MyBatis项目实战(1)实现查询操作 的基础上使用MyBatis实现向MySQL数据库中插入数据。

2021-05-08 15:31:13 55

原创 MyBatis项目实战(1)实现查询操作

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。

2021-05-08 10:46:08 61

原创 Codeforces 231A.Team(brute force, greedy)

大家好!我是`AC-fun`,我的昵称来自两个单词`Accepted`和`fun`。我是一个热爱ACM的蒟蒻。最近打算刷一下 Codeforces OJ的题目,一方面边学习算法边刷题,一方面也想提升一下自己的英语阅读水平。坚持就是胜利,加油!

2021-04-24 16:34:42 31

原创 第十二届蓝桥杯省赛第一场C/C++ B组真题及部分题解

第十二届蓝桥杯省赛第一场C/C++ B组真题及部分题解

2021-04-23 17:05:39 2334 15

原创 算法竞赛常用知识

本篇博客来整理一下在算法竞赛中经常用到但是可能会忘掉的知识,有些知识平时可能会记得,但是到真正算法竞赛的时候可能就会忘掉,甚至有一些很常见的知识再平时就忘掉了。但是在算法竞赛中碰到相关的题目还不得不使用这些知识,如果在算法竞赛的时候想不起来那是非常可惜的。所以来总结一下一些在刷题中常用的知识以及需要注意的地方,如果有不足或者需要补充的地方欢迎大家评论留言,博主也会随时补充更新。

2021-04-14 20:43:21 111

原创 蓝桥杯第六届C/C++ B组真题详解

本篇博客主要写一下蓝桥杯第六届C/C++ B组真题详解

2021-04-14 20:08:07 95

原创 试除法求数的约数

从 1 ~ n 依次枚举试除每一个数,判断该数是否可以整除 n,如果可以整除 n,说明该数是 n 的约数。试除法还可以优化一下,即我们可以发现约数都是 成对出现 的,如果 d 可以整除 n,那么 n / d 也可以整除 n。我们假设 d 与 n / d 中 d 是较小的那一个,那么 d <= n / d 即 d <= \sqrt{n} n 。所以只需要枚举到 \sqrt{n} 即可。

2021-04-11 10:54:15 43

原创 分解质因数

把一个合数用质因数相乘的形式表示出来,叫做分解质因数。分解质因数可以使用 试除法 来分解,即从小到大枚举每一个数 d,如果 d 可以整除 n,则从 n 中除掉所有的因子 d,同时累计除去 d 的个数。通过唯一分解定理,可以知道一个合数的因子一定在扫描到这个合数之前就被其更小的质因子 d 除掉了,所以能整除 n 的一定是质数。

2021-04-03 17:08:12 126

原创 质数的筛法

本文只要包含的内容为:质数的定义,质数的四种判定方法。试除法判定、朴素筛法、埃式筛法和线性筛法的详解。

2021-04-03 10:43:37 77 1

原创 LeetCode 1006. 笨阶乘——每日一题

通常,正整数 n 的阶乘是所有小于或等于 n 的正整数的乘积。例如,factorial(10) = 10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2 * 1。相反,我们设计了一个笨阶乘 clumsy:在整数的递减序列中,我们以一个固定顺序的操作符序列来依次替换原有的乘法操作符:乘法(*),除法(/),加法(+)和减法(-)。例如,clumsy(10) = 10 * 9 / 8 + 7 - 6 * 5 / 4 + 3 - 2 * 1。然而,这些运算仍然使用通常的算术运算顺序:我们在

2021-04-01 10:46:41 63

原创 算法竞赛的一些小技巧

本篇博客来总结一下博主所了解的有关算法竞赛的一些小技巧,如果有不足或者需要补充的地方欢迎大家评论留言,我会随时补充更新。

2021-03-30 20:52:59 1368 7

原创 LeetCode 61. 旋转链表——每日一题

给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。

2021-03-27 10:10:41 61

原创 LeetCode 83. 删除排序链表中的重复元素——每日一题

存在一个按升序排列的链表,给你这个链表的头节点 head ,请你删除所有重复的元素,使每个元素 只出现一次。返回同样按升序排列的结果链表。

2021-03-26 12:07:07 62

原创 AcWing 90. 64位整数乘法(位运算)

求 a 乘 b 对 p 取模的值。

2021-03-23 21:16:58 51

原创 AcWing 89. a^b(快速幂)

快速幂就是快速算底数的 n 次幂。其时间复杂度为 O(log₂N), 与朴素的 O(N) 相比效率有了极大的提高。

2021-03-23 15:26:26 45

原创 LeetCode 191. 位1的个数——每日一题

编写一个函数,输入是一个无符号整数(以二进制串的形式),返回其二进制表达式中数字位数为 '1' 的个数(也被称为 汉明重量)。

2021-03-22 16:58:55 21

原创 LeetCode 73. 矩阵置零——每日一题

给定一个 m x n 的矩阵,如果一个元素为 0,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。

2021-03-21 18:10:21 1868 10

原创 堆优化版Dijkstra算法

上一篇博客提到的 朴素Dijkstra算法 适用于求 稠密图 的最短路问题,因为 稠密图 的边数远远大于点数,朴素Dijkstra算法的思路为进行 n 次循环,每次循环再遍历 n 个点确定一个还未确定最短距离的点中距离源点最近距离的点,然后再用这个点更新其所能到达的点(算法默认当前的点可以到达所有的点,因为没有到达的点之间的距离都已经初始化为正无穷大,所以不会被更新,不影响结果)。时间复杂度为 O(n2)。

2021-03-09 00:00:20 307

原创 蓝桥杯 奖学金

某小学最近得到了一笔赞助,打算拿出其中一部分为学习成绩优秀的前 5 名学生发奖学金。期末,每个学生都有 3 门课的成绩:语文、数学、英语。先按总分从高到低排序,如果两个同学总分相同,再按语文成绩从高到低排序,如果两个同学总分和语文成绩都相同,那么规定学号小的同学排在前面,这样,每个学生的排序是唯一确定的。

2021-03-07 16:21:01 115

原创 蓝桥杯 纪念品分组(贪心,排序)

元旦快到了,校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品,并且每组纪念品的价格之和不能超过一个给定的整数。为了保证在尽量短的时间内发完所有纪念品,乐乐希望分组的数目最少。你的任务是写一个程序,找出所有分组方案中分组数最少的一种,输出最少的分组数目。

2021-03-06 22:36:42 116

原创 朴素Dijkstra算法

Dijkstra 算法用来求 所有边权都是正数 的 单源最短路 。边权 即两个点之间的距离;单源 即只求从源点(起点,终点也称为汇点)到其他点的最短距离;朴素Dijkstra 算法适用于求 稠密图 的最短距离问题。稠密图是指边数有很多的图,假设 n 为图的点数, m 为图的边数,那么一般当 m = n2 时该图为稠密图。朴素Dijkstra 算法的时间复杂度为 O(n2)。

2021-03-04 22:50:24 141 1

原创 通俗易懂的字符串哈希算法,你确定不来看一下吗?

字符串哈希 也叫做 字符串前缀哈希法 就是将预先一个字符串的每一个前缀都映射成一个 哈希值,当需要判断两个 子字符串 是否一样时,只需要判断这两个子字符串的哈希值是否相同就可以了。这样就可以通过 O(n) 的时间预处理字符串所有前缀 Hash 并在 O(1) 的时间内查询它的任意子串的 Hash 值。

2021-02-27 22:42:49 102 2

原创 C++ STL详解(4)

STL 是“Standard Template Library”的缩写,中文译为“标准模板库”。STL 是 C++ 标准库的一部分,不用单独安装。 C++ 对模板(Template)支持得很好,STL 就是借助模板把常用的数据结构及其算法都实现了一遍,并且做到了数据结构和算法的分离。例如,vector 的底层为顺序表(数组),list 的底层为双向链表,deque 的底层为循环队列,set 的底层为红黑树,hash_set 的底层为哈希表。

2021-02-22 16:51:00 722 28

原创 C++ STL详解(3)

STL 是“Standard Template Library”的缩写,中文译为“标准模板库”。STL 是 C++ 标准库的一部分,不用单独安装。 C++ 对模板(Template)支持得很好,STL 就是借助模板把常用的数据结构及其算法都实现了一遍,并且做到了数据结构和算法的分离。例如,vector 的底层为顺序表(数组),list 的底层为双向链表,deque 的底层为循环队列,set 的底层为红黑树,hash_set 的底层为哈希表。

2021-02-22 15:07:15 105

原创 C++ STL详解(2)

STL 是“Standard Template Library”的缩写,中文译为“标准模板库”。STL 是 C++ 标准库的一部分,不用单独安装。 C++ 对模板(Template)支持得很好,STL 就是借助模板把常用的数据结构及其算法都实现了一遍,并且做到了数据结构和算法的分离。例如,vector 的底层为顺序表(数组),list 的底层为双向链表,deque 的底层为循环队列,set 的底层为红黑树,hash_set 的底层为哈希表。

2021-02-21 12:31:14 1612 6

原创 C++ STL详解(1)

STL 是“Standard Template Library”的缩写,中文译为“标准模板库”。STL 是 C++ 标准库的一部分,不用单独安装。 C++ 对模板(Template)支持得很好,STL 就是借助模板把常用的数据结构及其算法都实现了一遍,并且做到了数据结构和算法的分离。例如,vector 的底层为顺序表(数组),list 的底层为双向链表,deque 的底层为循环队列,set 的底层为红黑树,hash_set 的底层为哈希表。

2021-02-19 22:07:12 397 4

原创 哈希表

哈希表(Hash Table),又叫散列表,是能够通过给定的关键字的值直接访问到具体对应的值的一个数据结构。也就是说,把关键字映射到一个表中的位置来直接访问记录,以加快访问速度。

2021-02-18 19:15:45 645 29

原创 静态链表的介绍及实现

用数组描述的单链表叫做静态链表,它兼顾了顺序表和链表的优点于一身,可以看做是顺序表和链表的升级版。使用静态链表存储数据,数据全部存储在数组中(和顺序表一样),但存储位置是随机的,数据之间"一对一"的逻辑关系通过一个整形变量(称为"游标",和指针功能类似)维持(和链表类似)。

2021-02-17 22:20:01 581

原创 并查集

并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。并查集的思想是用一个数组表示了整片森林(parent),树的根节点唯一标识了一个集合,我们只要找到了某个元素的的树根,就能确定它在哪个集合里。

2021-02-15 22:56:07 2456 10

原创 Trie树简介及其应用

Trie树又称字典树、前缀树、单词查找树等等。是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。

2021-02-12 16:36:42 374

原创 AcWing 600. 仰视奶牛(单调栈)

约翰有N头奶牛,编号为1到N。现在这N头奶牛按编号从小到大的顺序站成了一排,其中奶牛 i 的身高为Hi。现在,每头奶牛都向它的右侧望向那些编号较大的奶牛,对于奶牛 i 如果存在一头奶牛 j 满足 i<j 并且 Hi<Hj,那么我们称奶牛 i 需要仰视奶牛 j。请你求出每头奶牛的最近仰视对象。

2021-02-03 20:38:06 62

原创 AcWing 830. 单调栈

给定一个长度为N的整数数列,输出每个数左边第一个比它小的数,如果不存在则输出-1。

2021-01-30 16:17:42 369 2

原创 AcWing 42. 栈的压入、弹出序列

输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。注意:若两个序列长度不等则视为并不是一个栈的压入、弹出序列。若两个序列都为空,则视为是一个栈的压入、弹出序列。

2021-01-26 20:58:34 64

原创 AcWing 41. 包含min函数的栈

设计一个支持push,pop,top等操作并且可以在O(1)时间内检索出最小元素的堆栈。push(x)–将元素x插入栈中pop()–移除栈顶元素top()–得到栈顶元素getMin()–得到栈中最小元素

2021-01-26 19:02:39 60

原创 AcWing 20. 用两个栈实现队列

请用栈实现一个队列,支持如下四种操作:push(x) – 将元素x插到队尾;pop() – 将队首的元素弹出,并返回该元素;peek() – 返回队首元素;empty() – 返回队列是否为空;

2021-01-25 21:35:49 51

原创 AcWing 756. 蛇形矩阵

输入两个整数n和m,输出一个n行m列的矩阵,将数字 1 到 n*m 按照回字蛇形填充至矩阵中。

2021-01-18 11:12:19 74

原创 AcWing 1113. 红与黑(BFS、DFS)

有一间长方形的房子,地上铺了红色、黑色两种颜色的正方形瓷砖。你站在其中一块黑色的瓷砖上,只能向相邻(上下左右四个方向)的黑色瓷砖移动。请写一个程序,计算你总共能够到达多少块黑色的瓷砖。

2021-01-14 21:03:57 141 2

原创 LeetCode 4. 寻找两个正序数组的中位数

给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。

2021-01-01 21:26:35 76 2

蓝桥杯历年真题汇总(第一届到第十一届).zip

包含从第一届到第十一届的所有真题

2021-03-31

ACM算法专题讲解课件.zip

文件夹里是ACM一些常见算法的PPT课件:《Acm竞赛常用算法与数据结构》、《动态规划算法》、《南邮ACM算法与数据结构设计》、《算法分析与设计课件-动态规划法》、《算法设计与分析动态规划实例讲解》、《贪心算法》。

2020-04-19

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除