
ACM每周知识点
文章平均质量分 86
华北理工大学ACM协会官方账号专栏——ACM每周知识点
华北理工大学ACM协会
这个作者很懒,什么都没留下…
展开
-
中国剩余定理(CRT)
中国剩余定理原创 2022-10-16 11:20:36 · 2512 阅读 · 0 评论 -
差分约束算法
差分约束 ,求解不等式的可行解,求最大值或最小值原创 2022-09-30 11:59:59 · 230 阅读 · 0 评论 -
bellman-ford算法
Bellman-Ford算法的相关知识原创 2022-09-23 15:06:36 · 376 阅读 · 0 评论 -
线性DP例题
线性dp基础例题原创 2022-09-16 16:34:19 · 701 阅读 · 0 评论 -
区间DP(基础+提高)
在区间上进行动态规划,求解某一个区间的状态的值。主要通过合并小区间的状态进而求出整个大区间状态的值的dp算法。原创 2022-09-09 11:33:33 · 676 阅读 · 0 评论 -
字符串的最小表示法
最小表示法有很多含义,比如有集合最小表示法,字符串最小表示法等.这里介绍的是字符串的最小表示法.仍给一个字符串,例如ababc.可以通过循环一位的方式构造出来n1babca2abcab3bcaba4cabab其中,就被称为这个字符串的最小表示法.O(n2)需要先把n个字符串都构造出来,这就是O(n2)的时间复杂度,还需要再从前往后遍历一遍,找到字典序最小的字符串.而最小表示法有一个算法,可以把时间复杂度降到O(n).n即,这样字符串的长度就扩大了一倍,为2n.原创 2022-09-02 02:00:00 · 1260 阅读 · 1 评论 -
基础线段树
常用的线段树模板原创 2022-08-26 18:05:58 · 331 阅读 · 0 评论 -
一些比赛常用的内置函数
一些比赛时常用的内置函数原创 2022-08-19 15:30:39 · 202 阅读 · 0 评论 -
IOI 2022国际信息学竞赛那些事儿(附Day1原题)
IOI 2022 相关信息原创 2022-08-12 15:01:35 · 5751 阅读 · 2 评论 -
数据结构——线索二叉树(TBT)
线索二叉树的原理及具体实现原创 2022-08-05 14:33:30 · 681 阅读 · 0 评论 -
[ 图 论 ]二分图判定及其匹配(基础+提高)
二分图,又称二部图,英文名叫Bipartitegraph。二分图是什么?节点由两个集合组成,且两个集合内部没有边的图。换言之,存在一种方案,将节点划分成满足以上性质的两个集合。−(OIWiki)−(OIWiki)那么首先我们先看一个一般的图当我们做这件事的时候,会发现无论怎么分,点555必然会和000或111在一个集合中,为什么?当图中有奇数环时,他一定不是二分图,反之没有奇数环的图一定是二分图当图中有奇数环时,他一定不是二分图,我们多举一个例子。...原创 2022-07-29 09:33:46 · 909 阅读 · 0 评论 -
栈,单调栈,队列,单调队列
栈、单调栈、队列、单调队列原创 2022-07-01 10:00:32 · 262 阅读 · 0 评论 -
数据结构之后缀树
后缀数组原创 2022-06-24 23:16:35 · 576 阅读 · 0 评论 -
Dijkstra算法
dijkstra算法用于求正权边单源最短路原创 2022-06-16 23:57:41 · 212 阅读 · 0 评论 -
树形dp入门
目录2.最大独立集2.1 最大独立集的定义独立集是指图 G 中两两互不相邻的顶点构成的集合。最大独立集是具有最大尺寸的独立集。2.2例题没有上司的舞会题目链接AcWing算法基础课 285.没有上司的舞会2.3思路本道题是有向图,由上司指向职员。用动态数组去存储图的边。has_fa[i]表示i是否有父节点,1为有,0为没有。构造两个状态0,1。f[i][0]表示不选择i点时,i点及其子树能得到的最大快乐指数。f[i][1]表示选择i点时,i点及其子树能得到的最大快乐指数。j为i的儿子节点原创 2022-06-11 10:29:02 · 857 阅读 · 0 评论 -
树链剖分基础
讲解树链剖分基础知识原创 2022-06-04 17:47:48 · 282 阅读 · 0 评论 -
DFS深度优先搜索例题
文章目录前言一、全排列问题二、n皇后问题总结前言深度优先搜算算法,又称DFS(Depth First Search)。DFS算法是一种搜索算法,而搜索算法实质上是一种枚举,即借助计算机的高性能来有目的地枚举一个问题的部分情况或这个问题的所有情况,进而求出问题的解的一种方法。一、全排列问题首先的思路是,先对第一个数遍历(1,2,3)拿1举例:第一个空位选择1,标记[1]被使用;第二个空位选没有被标记过的数字2,并且对2标记;第三个空位选择没有被标记的数字,只能选择3;三个位置都被填满后原创 2022-05-27 18:20:17 · 531 阅读 · 0 评论 -
树状数组基础应用
树状数组前置知识lowbit函数lowbit(x) = x & (-x)Q:这么简单的一个运算作用是什么呢?A:首先我们知道任何一个正整数都有其二进制表示,负整数的二进制表示为:该数绝对值的二进制表示的反码+1。例如,对于一个数-7,我们知道其绝对值的二进制表示为0111,那么我们就可以知道-7的二进制表示为1000+1=1001,那么此时7&(-7)的结结果就是0001。同理我们可以通过任意给定的x得到其x&(-x)的值。这里我们展示1-8之间的lowbit计原创 2022-05-20 09:21:19 · 447 阅读 · 0 评论 -
二叉树的前序、中序、后序遍历(递归、非递归写法)
文章目录一、什么是二叉树?二、二叉树的基本概念三、二叉树的三种遍历方式1.前序遍历(preordertraversal)1.中序遍历(inordertraversal)1.后序遍历(postordertraversal)四、代码实现1.建树过程2.递归写法3.非递归写法4.完整代码一、什么是二叉树?二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。原创 2022-05-13 11:41:27 · 2029 阅读 · 0 评论 -
位运算总结(一)
位运算总结(一)位运算常见的位运算1、按位与2、按位或3、按位异或4、按位取反5、左移6、带符号右移正数负数代码位运算应用Acwing 801.二进制中一的个数题目描述输入格式输出格式数据范围输入样例输出样例代码位运算程序中的所有数在计算机内存中都是以二进制的形式储存的。位运算就是直接对整数在内存中的二进制位进行操作。注意:位运算是针对二进制的运算,所以手动模拟时要先将数转化为二进制。常见的位运算按位与a&b按位或a|b按位异或a^b按位取反~a原创 2022-05-06 20:06:31 · 468 阅读 · 0 评论 -
数学知识:扩展欧几里得算法
扩展欧几里得算法新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdow原创 2022-04-29 17:35:33 · 1270 阅读 · 0 评论 -
筛质数的各种方法
质数筛质数1. 质数的判定——试除法AcWing 866. 试除法判定质数输入格式输出格式数据范围输入样例:输出样例:代码2. 分解质因数——试除法AcWing 867. 分解质因数输入格式输出格式数据范围输入样例:输出样例:代码3. 筛法AcWing 868. 筛质数输入格式输出格式数据范围输入样例:输出样例:代码约数1.试除法求一个数的所有约数AcWing 869. 试除法求约数输入格式数据范围输入样例:输出样例:代码2.约数个数与约数之和AcWing 870. 约数个数输入格式输出格式数据范围输入样例原创 2022-04-22 16:14:20 · 1094 阅读 · 0 评论 -
第一DP:简单的背包模板
第一DP:简单的背包模板原创 2022-04-15 15:39:02 · 842 阅读 · 0 评论 -
树上倍增法求最近公共祖先
最近公共祖先概念定义对于节点x,y而言,如果说z节点既是x的祖先节点,也是y的祖先节点.那么我们认为z节点是(x,y)的公共祖先节点.公共祖先节点有很多,那么深度最大的节点,被称之为最近公共祖先.记为LCA(x,y)也可以认为LCA(x,y)节点,是所有公共祖先节点中,离着x,y这两个点的距离最近.以这张图片为例Lca(1,2)=1Lca(2,3)=1Lca(4,5)=2Lca(4,6)=1Lca(5,3)=1Lca(1,2)=1\\Lca(2,3)=1\\Lca(4,5)=2\\L原创 2022-04-07 23:24:19 · 386 阅读 · 0 评论 -
栈应用:中缀表达式,后缀表达式及表达式的计算
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录一、中缀表达式与后缀表达式1.中缀表达式2.后缀表达式二、将中缀表达式转化为后缀表达式三、后缀表达式的计算一、中缀表达式与后缀表达式1.中缀表达式中缀表达式就是我们日常见到的表达式写法,即运算符在两个运算数的中间。例:(5+20+1∗3)/14中缀表达式中会出现括号,这种表达式如果是人直接来进行计算的话,会比较方便,但如果编写程序,对表达式进行求值时会遇到麻烦。2.后缀表达式后缀表达式,又叫逆波兰式,其特点是操作符.原创 2022-04-03 16:27:39 · 877 阅读 · 0 评论 -
数学知识:博弈论
博弈论是算法竞赛中数学部分的一个分支,在各种acm竞赛中也经常考。本篇博客主要有以下内容:原创 2022-03-25 22:35:49 · 2009 阅读 · 0 评论 -
数据结构:哈希表
什么是哈希表?数组是我们平时常见的并且经常使用的一种数据结构,那么它具有什么优点呢?我们都知道,在我们知道数组中某元素的下标值时,我们可以通过下标值的方式获取到数组中对应的元素,这种获取元素的速度是非常快的。但是呢,数组也是有一定的缺点的,如果我们不知道某个元素的下标值,而只是知道该元素在数组中,这时我们想要获取该元素就只能对数组进行线性查找,即从头开始遍历,这样的效率是非常低的,如果一个长度为10000的数组,我们需要的元素正好在第10000个,那么我们就要对数组遍历10000次,显然这是不合理的。原创 2022-03-18 10:28:35 · 1400 阅读 · 0 评论 -
KMP算法基础
KMP算法基础AcWing 831. KMP字符串原题链接给定一个模式串 SSS,以及一个模板串 PPP,所有字符串中只包含大小写英文字母以及阿拉伯数字。模板串 PPP 在模式串 SSS 中多次作为子串出现。求出模板串 PPP 在模式串 SSS 中所有出现的位置的起始下标。输入格式第一行输入整数 NNN,表示字符串 PPP 的长度。第二行输入字符串 PPP。第三行输入整数 MMM,表示字符串 SSS 的长度。第四行输入字符串 SSS。输出格式共一行,输出所有出现位置的起始下标(原创 2022-03-11 00:00:00 · 241 阅读 · 0 评论 -
NCST ACM每周知识点索引
一、背景篇1、ACM简介2、算法竞赛常见赛制及题目形式3、ACM题目常见输入问题4、ACM常见英文翻译二、语法基础篇1、C++ STL入门2、语法基础课——第一讲 变量、输入输出、表达式和顺序语句3、语法基础课——第一讲 习题4、语法基础课——第二讲 判断语句5、语法基础课——第二讲 习题三、算法基础篇1、简单素数问题2、双指针算法入门3、一种比较巧妙的高效率质数判断法4、最短路算法入门5、二分法入门及应用6、算法基础课——第三章 搜索与图论(一)7、常用排序算法描述及C原创 2022-02-07 15:51:22 · 710 阅读 · 0 评论 -
二分法入门及应用
二分法的定义二分法的作用二分思路例题二分法的应用:二分查找关于二分法的两个函数lower_bound( )和upper_bound( )的常见用法二分法的定义对于区间[a,b]上连续不断且f ( a ) ⋅ f ( b ) < 0 的函数y = f ( x ) ,通过不断地把函数f ( x )的零点所在的区间一分为二,使区间的两个端点逐步逼近零点,进而得到零点近似值的方法。二分法的作用二分法的作用主要有求解方程的根和查找。它可以大大降低时间复杂度。二分思路 设置l、r、.原创 2021-12-17 22:17:58 · 980 阅读 · 0 评论 -
C++ STL入门
文章目录前言一、vector容器二、set容器三、string四、map容器五、algorithm算法库1.sort()2.next_permutation()和prev_permutation()前言 STL,英文全称 standard template library,中文可译为标准模板库或者泛型库,其包含有大量的模板类和模板函数,是 C++ 提供的一个基础模板的集合,用于完成诸如输入/输出、数学计算等功能。 从根本上说,STL 是一些容器、算法和其他一些组件的集合,所有容器和算法都是总结了原创 2022-01-21 21:19:44 · 841 阅读 · 0 评论 -
常用排序算法描述及C++代码实现
文章目录前言一、插入排序 O(n²)1.算法描述2.代码实现二、选择排序 O(n²)1.算法描述2.代码实现三、冒泡排序 O(n²)1.算法描述2.代码实现四、快速排序 O(nlogn)1.算法描述2.代码实现五、归并排序 O(nlogn)1.算法描述2.代码实现前言 排序(sort),顾名思义,即通过特定的算法因式将一组或多组数据按照既定模式进行重新排序。这种新序列遵循着一定的规则,体现出一定的规律。在ACM竞赛题目中,根据数据规模和数据特性选择合适的排序算法常常作为解决问题的第一步,在相关行业的原创 2022-01-07 20:29:30 · 972 阅读 · 0 评论 -
数据结构:链表、栈
1. 链表1.1 什么是链表链表是数据结构之一,其中的数据呈线性排列。在链表中,数据的添加和删除都较为方便,访问比较耗费时间。链表的数据元素是一个一个串联在一起的,这一串数据形成的结构就是“链表”。它就像一条自行车“链条”一样。每一个数据元素可以称之为一个节点。链表在内存中的物理存储空间是非连续、非顺序的。其中每个节点包含两部分,一个是存储数据元素的**“数据域”,另一个是存储下一个节点地址的“指针域”**。1.2 单链表1.2.1 单链表图解1.2.2 单链表的应用题目描述:实现一个原创 2021-12-31 08:51:14 · 2216 阅读 · 0 评论 -
最短路算法入门
最短路算法入门最短路问题是算法竞赛中非常常见的一类问题,在这里我们只需要考虑有向图上的算法,因为无向图是特殊的有向图(对于无向图中的每条边u↔vu\leftrightarrow vu↔v都可以转化为有向图中的u→vu\rightarrow vu→v和v→uv\rightarrow uv→u)图的存储图的存储一般有两种形式:1、邻接矩阵存储,开一个二维数组g[N][N]g[N][N]g[N][N],其中g[i][j]g[i][j]g[i][j]表示iii与jjj之间的边权。2、邻接表存储,使用原创 2021-12-04 17:27:38 · 768 阅读 · 1 评论 -
一种比较巧妙的高效率质数判断法
一种比较巧妙的高效率质数判断法文章目录一种比较巧妙的高效率质数判断法前言一、知识储备和证明二、代码实现前言质数,又名素数(prime number),是算法竞赛出题常用的一种角度。素数的定义是只能被1和它本身整除的数字叫做素数。算法竞赛中与此有关的知识点有素数判断、素数筛等。由于判断质数在比赛出题中常常作为解题的其中一小步,因此我们常常用写一个isprime函数的方式来进行素数判断。此函数的功能为接收一个整数,若此整数为素数,返回true,否则返回false。在之前的文章里已经提到过了素数判断的原创 2021-11-13 12:56:57 · 564 阅读 · 1 评论 -
双指针算法入门
双指针算法入门双指针算法是用的非常地多的一种算法。很多时候,我们并不会意识到自己所使用的就是双指针算法。双指针算法的类型一般双指针算法分为两大类:1. 在两个序列中,一个指针指向其中一个序列,另一个指针指向另一个序列;例如归并排序中,需要将两个有序序列进行合并,把两个有序序列合并用的就是双指针算法:void merge_sort(int l,int r){ if(l==r) return; int mid=l+r>>1; merge_sort(l,mi.原创 2021-10-21 22:25:11 · 281 阅读 · 0 评论 -
简单素数问题
原文链接:https://blog.youkuaiyun.com/weixin_43318827/article/details/105615753素数的判断判断一个数n是否为素数,就需要判断n是否能被2、3…、n-1中的一个数整除。只有都不能整除n,n才能判定为素数。bool isPrime(int n){ if (n <= 1) return false; for (int i = 2; i < n; i++) { if(n % i == 0)转载 2021-10-16 10:33:56 · 348 阅读 · 0 评论 -
LCA四种写法其一:倍增
文章目录众所周知一、倍增区间倍增二、LCA2.读入数据总结众所周知LCA有四种写法一、倍增fa[n][logn],fa[i][j]表示i节点的第2^j个父亲。显然:fa[i][j]=fa[ fa[i][j-1] ][j-1]即i的第2j个父亲是i的第2(j-1)个父亲的第2(j-1)个父亲。于是,求i的第k个父亲的复杂度O(k)—>O(logk)求i的第k个父亲:1. for(int j=0; j<=log2(k); j++)2. if((1<<j)&a.原创 2021-10-08 22:10:55 · 824 阅读 · 1 评论 -
ACM常见英文翻译
ACM常见英文翻译通用数论图论字符串计算几何其它通用denote 表示elements 元素variable 变量abbreviation 缩写rise上升fall下降match 匹配calculate 计算reduction 压缩data structures 数据结构optimization 最优dynamic programming 动态规划distinct 不同的cycle 循环execute 执行in the range of 在…范围内indentical原创 2021-10-08 22:03:58 · 699 阅读 · 0 评论 -
ACM题目常见输入问题
多组输入输出问题和上一篇博客有一点点重复1001 : A+B for Input-Output Practice (I)题目链接Description计算A+B程序设计任务中常常会包含多组输入输出。Input第一行一个正整数n,代表输入数据的组数。以下n行,每行两个正整数Output计算这n组数的和,每组答案占一行Sample Input21 510 20Sample Output630需要注意的问题这道题是oj中第二道题,可能也是很多同学第一次遇到多组输入的原创 2021-10-01 09:49:40 · 1551 阅读 · 1 评论