ACM笔记
文章平均质量分 92
Prince1Alexander
这个作者很懒,什么都没留下…
展开
-
素数筛与欧拉函数(笔记+模板)
素数筛暴力筛法就不说了,容易超时。埃拉托斯特尼筛法 (时间复杂度O(nloglogn) )下面贴上模板,详细内容请参考博客:https://blog.csdn.net/qq_44616044/article/details/107307847ll Make_prime(ll n){ ll cnt=0; memset(vis,0,sizeof(vis)); for(ll i=2; i<=n; i++) { if(!vis[i])原创 2020-08-03 15:12:53 · 189 阅读 · 1 评论 -
线段树基础(学习笔记)
什么是线段树呢?它其实是一种用于区间修改、区间求和的工具。本文先讲解单点更新的线段树,比较基础;之后的进阶版会涉及区间更新。首先理解线段树的思想是关键,齐次要学会使用线段树的模板,最后要学会灵活使用线段树。线段树与之前学过的树状数组有些类似,先贴上一张图(百度百科):线段树中每个结点的标号方式与树状数组略有不同:我们记[1,8]为1号,[1,4]为2号,[5,8]为3号,[1,2]为4号,[3,4]为5号,…,[1,1]为8号,…,[8,8]为15号。线段树的建立实际情况下对一个长度为n原创 2020-07-31 10:43:30 · 146 阅读 · 0 评论 -
前缀和&差分(学习笔记)
前缀和&差分(学习笔记)1. 前缀和前缀和其实就是高中数学里面学过的数列an的前n项和Sn理解起来很好理解,但是想用的熟练就要多做题了对于前缀和的储存,推荐使用STL模板 mapmap简介定义方式:map<数据类型1 , 数据类型2> 变量名;数据类型1相当于数组中的下标数据类型2相当于数组中的元素详解请查阅微软文档:https://docs.microsoft.com/zh-cn/cpp/standard-library/map-class?view=vs-2019原创 2020-07-28 17:39:55 · 362 阅读 · 0 评论 -
字典树&AC自动机(学习笔记)
字典树&AC自动机(学习笔记)字典树中可以存储一系列字符串,当这些字符串有公共前缀时,可以快速找出。字典树模板题HihoCoder 1014 Trie树 题目链接#include <iostream>#include <cstdio>#include <string>#include <string.h>using namespace std;struct node{ //为节省空间,不把每个字母放在结构体里面原创 2020-07-27 21:10:56 · 499 阅读 · 0 评论 -
拓扑排序例题(学习笔记)
拓扑排序算法例题1. HDU 3342 ---- 有向图判环Problem DescriptionACM-DIY is a large QQ group where many excellent acmers get together. It is so harmonious that just like a big family. Every day,many “holy cows” like HH, hh, AC, ZT, lcc, BF, Qinz and so on chat on-line原创 2020-07-23 18:52:14 · 672 阅读 · 0 评论 -
最短路径问题------Dijkstra算法(学习笔记)
最短路径问题------Dijkstra算法(学习笔记)算法思想:选取一个点作为起点遍历其他与起点构成通路的点,搜寻权值最小的道路,然后把这个点与起点连接,更新标记,更新其他点到起点的权值;接着遍历除了已选道路之外的点,进行,… … ,遍历仍然是n-1次(和最小生成树很像)。Dijkstra算法和最小生成树中的Prim算法的主要区别:Dijkstra算法中,要保存每个点到起点的总权值;而在Prim算法中,保存的是每个点到最小生成树的权值其他的步骤类似例题 HDU 2544 ---- 最短路原创 2020-07-22 20:14:20 · 412 阅读 · 0 评论 -
最小生成树 (学习笔记)
最小生成树 (学习笔记)什么是最小生成树呢??一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。最小生成树可以用Kruskal(克鲁斯卡尔)算法 或 Prim(普里姆)算法求出。(源于百度百科)Kruskal算法基本思想:假设 WN=(V,{E}) 是一个含有 n 个顶点的连通网,则按照克鲁斯卡尔算法构造最小生成树的过程为:先构造一个只含 n 个顶点,而边集为空的子图,若将该子图中各个顶点看成是各棵树上的根结点,则它是一个含有 n原创 2020-07-21 17:36:32 · 235 阅读 · 0 评论 -
并查集(学习笔记)
并查集(学习笔记)并查集是一种用来管理元素分组情况的数据结构整体上分为两个部分:合并集合:合并元素a和元素b所在的组查找集合:查询元素a和元素b是否属于同一组模板:/*初始化: 增添一个parent数组,存储每个元素对应的根结点*/ for(int i = 0; i < MX; ++i) parent[i] = i; //初始化 //查找: int findset(int x) { if(parent[x] == x) return x; int rt =原创 2020-07-20 20:31:45 · 139 阅读 · 0 评论 -
Breadth First Search(BFS)----广度优先搜索(学习笔记)
Breadth First Search(BFS)----广度优先搜索基础知识:广度优先搜索是一种分层的搜索过程,每向前走一步可能访问一批顶点,不像深度优先搜索那样有回退的情况。因此,广度优先搜索不是一个递归的过程,其算法也不是递归的。实现过程简图:应用范围:(目前已知)连通块模型问题,最短路径或时间问题例题1. POJ 1562 ---- Oil DepositsDescriptionThe GeoSurvComp geologic survey company is responsi原创 2020-07-19 21:17:26 · 295 阅读 · 0 评论 -
Depth First Search(DFS) ---- 深度优先搜寻 (学习笔记)
Depth First Search(DFS) ---- 深度优先搜寻 (学习笔记)首先,什么是DFS呢?DFS是一种用于遍历或搜索树或图的算法。过程如下(1)从图(树)中某个顶点v出发,访问v;(2)找出刚访问过的顶点的第一个未被访问的邻接点,访问该结点。以该结点为新结点,重复此步骤,直至刚访问过的顶点没有未被访问的邻接点为止;(3)返回前一个访问过且仍有未被访问的邻接点的顶点,找出该顶点的下一个未被访问的邻接点,访问该顶点;(4)重复(2)和(3),直至图(树)中所有顶点都被访问过,搜原创 2020-07-18 20:38:41 · 212 阅读 · 0 评论 -
快速幂算法(学习笔记)
快速幂算法(学习笔记)快速幂----即“模平方重复计算法”对于指数位置上比较大的数,直接用pow函数可能会超时,因为要计算很多次。这里直接给出实例,容易理解:例题1:HDU 2035 ---- 人见人爱A^BProblem Description求A^B的最后三位数表示的整数。说明:A^B的含义是“A的B次方”Input输入数据包含多个测试实例,每个实例占一行,由两个正整数A和B组成(1<=A,B<=10000),如果A=0, B=0,则表示输入数据的结束,不做处理。Out原创 2020-07-16 20:53:23 · 249 阅读 · 0 评论 -
STL----栈的初步应用
STL----栈的初步应用(学习笔记)栈的模型如下栈就像一个装满衣服的桶,要想往里面放衣服,只能放在最上面;而要想取出衣服,则必须先从上面去取。简称为上进上出。应用实例1. HDU 5479 ---- Scaena FelixTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Problem DescriptionGiven a parentheses sequence cons原创 2020-07-14 21:05:42 · 150 阅读 · 0 评论