ACM学习
文章平均质量分 84
Twilight Sparkle.
学无止尽
展开
-
DFS(深度优先搜索)、BFS(广度优先搜索)
dfs是一种思想,并不是一种固定的算法,它不仅仅只在图论的问题中出现。有些时候,一些非图论的题的问题也可以转化成dfs问题。要掌握dfs必须见许多的题。这里只以最简单的题目为例,阐述dfs的思想,以及给出例题的题解。dfs的思想是什么?dfs思想的重点在于回溯,与递归类似。它会先将某一条路走到穷尽,然后换另一条路走,当某一个节点的方向全部走完后,回溯到上一个节点,重复上述过程,直到满足条件或者穷尽所有可能的路径。相信初学者根本没看懂这到底说的什么意思。dfs用文字描述起来特别抽象,所以需要例题和.原创 2022-01-17 22:40:33 · 692 阅读 · 0 评论 -
图的建立(邻接矩阵,邻接链表,链式前向星)
常用的建图方式有三种:邻接矩阵,邻接链表(vector建表),链式前向星。做题时我个人常用是邻接矩阵和链式前向星,链式前向星是最灵巧和节约空间的,深受ACMER喜爱。但同时也是三种算法里最难理解的。一旦理解,就是如鱼得水,所以我会着重讲链式前向星。后续图论的题,也推荐大家尽量熟悉和使用链式前向星。原创 2022-01-16 16:19:37 · 5464 阅读 · 1 评论 -
c++ STL 优先队列
C++ stl优先队列原创 2021-11-19 16:43:00 · 1455 阅读 · 0 评论 -
树状数组(单点修改,区间修改等)
单点修改,区间查询;区间修改,单点查询;区间修改,区间查询;原创 2021-10-26 20:22:36 · 2290 阅读 · 1 评论 -
关于lowbit函数
前言:今天比赛被一道简单的lowbit应用+树状数组卡了,好吧,我承认我很蠢,树状数组好长一段时间没复习,只知道套模板(笑),我甚至想树套树,实际上第一层就是个lowbit(我怎么这么蠢),所以今天正好趁热打铁把lowbit和树状数组一起复习了。什么是lowbit函数lowbit(x)通常与树状数组一起使用,它的作用是返回x在二进制中最低为1所对应的值。因为lowbit对10进制的数讨论意义不大,所以接下来数字皆以二进制的方式表示。例:(十进制)41:(二进制)101001例.原创 2021-10-24 19:28:12 · 1192 阅读 · 0 评论 -
快速幂 矩阵快速幂
前言:好像没啥好写的,链接可能还没有更新完快速幂快速幂,用于解决当n很大时的情况。通常与取模同时应用。用最笨的方法求,即。时间复杂度为,而快速幂(附带取模),可以将时间复杂度降低为。利用倍增的思想,例如,等于,又等于,即,如果n为奇数,,那么换成代码就是:ll Powermod(ll a,ll b){ ll ans=1; a=a%mod; while(b>0) { if(b%2==1) ans=(ans*a)%...原创 2021-10-22 12:29:51 · 5727 阅读 · 5 评论 -
栈的高级应用
计算中缀表达式题目描述:读入一个只包含+,-, *,/,(,)的整数计算表达式,计算该表达式的值,输出结果保留两位小数(对于除法的运算是有可能带有小数的)。输出结果在1e9范围内。例如:输入:5+(10*2)-6输出:19.00解题思路这里只讲最经典的一种解法:先将中缀表达式转化为后缀表达式,再由后缀表达式进行计算。为什么要先转化成后缀表达式而不直接进行计算:因为中缀表达式涉及了运算符优先级,还涉及了括号优先...原创 2021-10-17 23:28:52 · 179 阅读 · 0 评论 -
排序(堆排序,快速排序,归并排序)
前言:如果内容不全,说明还没复习到,复习时会陆续更新。堆排序建议初学者先去看这两篇文章,写的很好,保姆级别教学。此篇只是加入了些个人理解以及代码模板供自己复习使用,具体细节太多了,本人时间和水平有限,就不在此写具体实现过程了。有的地方可能说的不对,欢迎指正。文章链接:堆排序——深入浅出(图解)堆排序前置知识1.堆:堆是一种数据结构,一种叫做完全二叉树的数据结构。2.堆的性质:这里我们用到两种堆,其实也算是一种。大顶堆:每个节点的值都大于或者等于它的左右子节...原创 2021-09-28 23:22:31 · 734 阅读 · 0 评论 -
素数打表+最小质因子(埃氏筛,欧拉筛)
问题:枚举n以内所有素数素数打表的共有缺点都是只能满足1e8以下的数字,因为数组最大只能开1e8级别,数字太大还是得朴素求素数法用sqrt()优化埃氏筛前言:埃氏筛, 全名埃拉托斯特尼筛法,是一种古老且简单的用来找出一定范围内所有的质数的算法,公元前250年由希腊数学家埃拉托斯特尼提出。 这种算法的主要思想是:一个素数的整数倍一定是合数时间复杂度:O(n * log (log n) )代码模板:/*时间复杂度:O(n*logn)*/#include<iostream&原创 2021-09-27 17:06:20 · 418 阅读 · 0 评论 -
ACM部分学习路线
前言:接触ACM也有接近一年的时间了,上一学年学习的知识点也是零零散散,最近打算好好根据论坛上找到的学习路线重新拉一遍,顺便写写博客记录题解和算法笔记,这也算是来CSDN发布的第一篇文章了。这篇文章只是一篇总结和链接,各个知识点的链接会根据我的复习(学习)进度陆续更新,希望能完结。参考文章:ACM算法学习路线、清单ACM路线算法竞赛入门到进阶 --- 完整学习路线(含知识点讲解)ACM学习计划一.基础篇众所周知,ACM竞赛是三人小队,三个人每个人都会选择不同的方向...原创 2021-09-26 22:12:51 · 2109 阅读 · 0 评论