自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(123)

原创 1024

1024 1024 1024

2020-10-24 21:03:18 9

原创 hdu 2612 Find a way(双起点bfs)

Find a way#include<iostream>#include<queue>#include<cstring>using namespace std;typedef pair<int,int> PII;int dx[4] = {0,-1,0,1}, dy[4] = {-1,0,1,0};const int N = 205;char g[N][N];int d1[N][N],d2[N][N];int n,m;void b

2020-08-11 09:44:51 37

原创 最短路模型(bfs)

文章目录AcWing 1076. 迷宫问题AcWing 188. 武士风度的牛AcWing 1100. 抓住那头牛AcWing 1076. 迷宫问题在求最短路的时候需要存储某个点是由哪个点更新过来的。#include<iostream>#include<cstring>#define x first#define y secondusing namespace std;const int N = 1005;typedef pair<int,int&gt

2020-07-15 11:40:25 70

原创 求连通块问题(flood fill、dfs)

文章目录AcWing 1097. 池塘计数AcWing 1098. 城堡问题AcWing 1106. 山峰和山谷AcWing 1097. 池塘计数#include<iostream>#include<queue>using namespace std;const int N = 1005;#define x first#define y secondtypedef pair<int,int> PII;char g[N][N];queue<PI

2020-07-15 11:01:17 50

原创 最小步数问题(BFS)
原力计划

文章目录引入AcWing 845. 八数码AcWing 1107. 魔板引入最小步数问题也是通过bfs求最短路的问题。但之前我们遇到的bfs求最短路都是只有一张图,所有状态都在一个图内,例如走迷宫问题。BFS应用——走迷宫而最小步数问题的每个状态都分别对应一张图。那么怎样表示这些状态就是一个难点。通常我们会借用哈希表来表示状态。AcWing 845. 八数码补充一个小技巧:设元素x在一维数组的下标为index,二维数组的下标为(row,col),(ps:已知二维数组长度为n * m)一维

2020-07-13 20:00:43 89

原创 数据库的创建、修改、删除
原力计划

文章目录1、数据库的结构2、创建数据库①语法②例题例1例2例33、查看数据库信息4、修改数据库①语法②例题例1例2例35、删除数据库1、数据库的结构红色箭头表示,要想访问日志文件、次要文件必须通过主文件。2、创建数据库创建数据库是重点!①语法就目前学的内容,创建数据库时只需要关注橙色框内的即可。(下图中[ ]内的语句在创建时可有可无)< filespec > 代表文件属性,而[,…n]代表可以有多个文件,毕竟一个文件组内可以有多个文件。其中文件属性< filespec

2020-06-03 14:48:01 237

原创 容斥原理

文章目录原理证明例题原理S1、S2 、S3 分别代表下图三个圆1、2、3的面积如果我们想求下面图形构成的面积,该怎么求呢,很简单S = S1 ∪ S2 ∪ S3=S1 + S2 + S3-S1 ∩ S2 - S1 ∩ S3 - S2 ∩ S3+S1 ∩ S2 ∩ S3拓展一下,如果是4个圆的面积应该是S =S1 ∪ S2 ∪ S3 ∪ S 4 =S1 + S2 + S3 + S4-S1 ∩ S2 - S1 ∩ S3 - S1 ∩ S4 - S2 ∩ S3 - S2 ∩ S4 - S3

2020-05-25 18:24:50 100

原创 卡特兰数

文章目录题目解法卡特兰数推导代码题目给定 n 个 0 和 n 个 1,它们按照某种顺序拍成长度为 2n 的序列,求它们能排成的所有序列中,能够满足任意前缀序列 0 的个数都不少于 1 的个数的序列有多少个。答案对 109+7 取模。数据范围: 1≤n≤105解法(在下文叙述中,为了方便,满足题目要求的称为合法路径,不满足的称为不合法路径)将01序列转化到坐标系上:0 代表向右走一格1 代表向上走一格那么任意前缀序列 0 的个数都不少于 1 的个数的序列(合法路径),就可以转换为:路径上任

2020-05-23 16:05:05 107

原创 高斯消元解线性方程组
原力计划

文章目录基础知识算法步骤举个例子模拟一下算法例题和代码基础知识高斯消元可以通过初等行列变化把 增广矩阵 转换成 阶梯型矩阵,进而求解 n 个线性方程组的解,其时间复杂为 O(n^3^)初等行列变换:(对一个方程组进行以下三个操作不会影响方程的解)把某一行乘一个非0的数(方程左右两边同乘)交换某两行的位置把某一行的若干倍加到另一行上例如线性方程组为:a11x1 + a12x2 + a13x3 + … + a1nxn = b1a21x1 + a22x2 + a23x3 + … + a2nx

2020-05-22 23:36:31 301

原创 常见博弈论总结
原力计划

文章目录巴什博弈斐波那契博弈尼姆博弈威佐夫博弈巴什博弈一堆个数为 n 的石子,两人轮流取石子,每次可拿 1 ~ m 颗,先取完者胜。分析:(1) 当 n ≤ m 时,先手可以一次拿完,先手赢(2) 当 n = m + 1 时,无论先手拿多少个,后手都能一次拿完,后手赢对上面两种情况拓展:(Ⅰ) 若 n % (m + 1) = 0,假如先手拿 k 个,后手都能拿 m + 1 - k 个, 使面对先手的格局永远都是 m + 1 的整数倍,直到最后为 m + 1,故后手赢(Ⅱ) 若 n % (m

2020-05-18 13:50:53 109

原创 贪心算法
原力计划

文章目录区间选点区间分组区间覆盖最大不相交区间数量最优装载问题Huffman树区间选点AcWing 905. 区间选点#include<iostream>#include<algorithm>using namespace std;const int N = 1e5+10;struct Range{ int l, r; bool operator< (const Range &w)const { return r < w.r; //

2020-05-16 21:00:05 108

原创 扩展欧几里得算法

文章目录欧几里得算法扩展欧几里得算法扩展欧几里得算法求线性同余方程欧几里得算法也叫辗转相除法,用于求两个数的最大公约数int gcd(int a,int b){ return b ? gcd(b, a % b) : a; } b为 0 时,最大公约数就是a,0可以整除任何数不为 0 时,最大公约数就是gcd(b, a % b)扩展欧几里得算法AcWing 877. 扩展欧几里得算法扩展欧几里得算法用于求解方程 ax + by = gcd(a,b) 的解 x 和 y① 当

2020-05-11 12:22:13 75

原创 线性DP、区间DP、计数类DP
原力计划

文章目录AcWing 898. 数字三角形AcWing 895. 最长上升子序列AcWing 897. 最长公共子序列AcWing 898. 数字三角形分析:f[i,j] 这个状态表示一个集合,是所有从起点走到(i,j)的路径,f[i,j] 存的值是这条路径的最大值。集合划分: f[i,j] 可以划分为两部分:① 来自 (i,j) 的左上方: f[i-1,j-1] + a[i][j]...

2020-05-04 20:12:36 141

原创 单调栈、单调队列

文章目录单调栈单调队列单调栈AcWing 830. 单调栈1、暴力做法:外层循环枚举每一个元素 x,内层循环找到这个 x 的左边第一个比它小的数。在求 x 的左边第一个比它小的数,是将 x 左边所有的数全部入栈,从栈顶开始找到第一个比它小的数,找到后停下来。2、在暴力做法下进行优化。我们发现,如果 a1 >= a2,那么当找 x 的左边第一个比它小的数时, 如果 i < j,...

2020-04-28 13:36:49 91

原创 背包问题总结
原力计划

文章目录含义01背包完全背包多重背包分组背包含义这里有 N 个物品,每个物品的体积和价值分别为 vi、wi,我们有一个容量为 V 的背包,求这个背包能装的物品最大价值是多少。(装的所有物品总体积不能超过 V)四种最常见的背包问题:01背包 :每件物品最多只用一次完全背包 : 每件物品有无限个多重背包 : 每件物品最多有 Si 个分组背包 : 物品有 N 组,每一组里...

2020-04-27 14:55:29 108

原创 求组合数算法总结
原力计划

文章目录组合数概念求组合数Ⅰ求组合数Ⅱ求组合数Ⅲ求组合数Ⅳ组合数概念C(a,b) = a!b!(a−b)!\frac{a!}{b!(a-b)!}b!(a−b)!a!​ = a∗(a−1)∗(a−2)∗....∗(a−b+1)b!\frac{a * (a-1)*(a-2)*....*(a-b+1)}{b!}b!a∗(a−1)∗(a−2)∗....∗(a−b+1)​ C(a,0) = 1意...

2020-04-18 22:29:46 108

原创 二分图算法总结(染色法、匈牙利算法)
原力计划

文章目录二分图算法框架染色法匈牙利算法二分图算法框架二分图: 所有的点可以分为两个集合V1、V2,图中任意一条边的两个顶点分别在不同的集合,即任意一个集合的内部不能有边。二分图中不含奇数环(奇数环: 边数为奇数的环)解释一下! 如下图:) 如果 A 放到 V1 集合,B 放到 V2 集合,那么 C 应该放到哪个集合呢,很明显,C 与 A、B 都有边,放哪个集合都不行!!!染色法...

2020-04-15 18:49:18 741 2

原创 最小生成树算法总结
原力计划

文章目录最小生成树算法框架朴素版primkruskal最小生成树算法框架什么是最小生成树?一个图有 n 个结点,很多条边。最小生成树需要包含原图中的 n 个结点,并且有保持图连通的最少的边,且使这个树的权值达到最小。遇到稠密图就用朴素版prim,稀疏图就用kruskal即可,堆优化版的prim没有必要掌握。朴素版prim朴素版 prim 和 dijkstra 算法很像。dijks...

2020-04-14 15:55:02 133

原创 最短路算法总结(超详细~)
原力计划

文章目录最短路算法框架朴素Dijkstra算法堆优化版Dijkstra算法最短路算法框架最短路有五种算法,分别适用不同的情况。单源最短路: 求一个点到其他点的最短路多源最短路: 求任意两个点的最短路稠密图用邻接矩阵存,稀疏图用邻接表存储。稠密图: m 和 n2 一个级别稀疏图: m 和 n 一个级别朴素Dijkstra算法Dijkstra算法是通过 n 次循环来确定 n 个点...

2020-04-11 23:09:44 738

原创 拓扑排序

拓扑排序:对一个有向无环图G进行拓扑排序,是将G中所有顶点排成一个线性序列,使得图中任意一对顶点u和v,若边<u,v>∈E(G),则u在线性序列中出现在v之前。排序规则:1、每个顶点只出现一次2、如果点...

2020-04-09 15:12:42 100

原创 DFS应用—全排列
原力计划

AcWing 842. 排列数字给定一个整数n,将数字1~n排成一排,将会有很多种排列方法。现在,请你按照字典序将所有的排列方法输出。输入格式共一行,包含一个整数n。输出格式按字典序输出所有排列方案,每个方案占一行。数据范围1≤n≤7输入样例:3输出样例:1 2 31 3 22 1 32 3 13 1 23 2 1这道题也就是搜索 1~n 的一个全排列问题按...

2020-04-08 23:21:09 204

原创 哈希表(散列表)
原力计划

文章目录基本概念例题拉链法求解开放寻址法求解基本概念哈希表也称散列表,通过将给定的关键值映射到表中的一个位置来访问记录,以加快查找的速度,时间复杂度为O(1)。比如,给定一个表m,给定一个关键值 x,那么 h(x) 就称为哈希函数,表m就称为哈希表,h(x) 就是 x 在哈希表m中存储的下标。那么 h(x) 怎么求呢,我们需要对 某个数 取余即可。举个例子:这一组数有N=6个,为{3、...

2020-04-06 22:26:59 305

原创 区间合并

区间合并,就是把有交集的两个集合进行合并,合并成更大的区间,即取两个区间的并集。步骤:1、对每个区间进行排序2、假设我们从前往后扫描到了第 i 个区间,那么第 i 个区间和当前维护的区间的关系有三种:① 第 i 个区间在当前维护的区间的内部② 第 i 个区间和当前维护的区间有交集,但不完全在维护的区间的内部③ 第 i 个区间和当前维护的区间没有交集补充: sort对pair排序时,...

2020-04-04 19:30:08 135 2

原创 离散化

文章目录离散化概念、用途离散化的步骤部分代码例题离散化概念、用途用处: 有些数据本身很大, 自身无法作为数组的下标保存对应的属性,我们可以对这些数进行离散化处理。假如,有一组数{1、2、100、2000、10000、109},这组数有个特点,就是值域最大可以取到109甚至更大,但是这组数的个数很少,最多只有105左右。而有一些题,需要我们把这些数当作下标来做题,对于这么大的数,我们总不可能开...

2020-04-03 21:54:46 113

原创 快速幂 c++

快速幂就是快速算底数的n次幂。其时间复杂度为 O(log₂N), 与朴素的O(N)相比效率有了极大的提高。来想想我们之前是怎么求一个数的 k 次幂的,比如220,是用一个for循环来实现的,我们要循环 20 次才能求出它,这个还看不出什么问题,可如果是求21e9,我们岂不是要循环1e9次,这个时间复杂度太高了,所以,我们需要通过快速幂来求。原理:我们这里以 211 为例,a11 = a...

2020-04-02 19:21:39 134

原创 高精度乘高精度

C=A * B (A、B均是高精度数)比如A=156,B=3,求A * B很容易知道答案是468,怎样算的呢?① 首先让3 * 6 = 18,然后向进一位,并且这位只保留8② 让3 * 5 + 进位1 = 16,然后向前进一位,并且这位只保留6③ 让3 * 1 + 进位1 = 4,此时不向前进位,保留4所以最终答案是468通过这个例子我们再来分析发现,C0 = A0 * B0,C...

2020-04-01 22:25:27 133

原创 欧拉函数

在数论,对正整数n,欧拉函数是小于或等于n的正整数中与n互质的数的数目(因此φ(1)=1)。互质是公约数只有1的两个整数,叫做互质整数。函数内容:n 分解质因数后:n=p1a1 * p2a2 * p3a3 … pkak,(其中 pi 为质数)那么 φ(n) = n * (1 - 1/p1) * (1 - 1/p2) *… *(1 - 1/pk)函数证明:我们知道,1~n 个数中有 \f...

2020-03-30 22:39:32 108

原创 约数个数、约数之和、约数

文章目录试除法求一个数的所有约数求约数个数求约数之和欧几里得算法试除法求一个数的所有约数vector<int> get_divisors(int n) //求n的约数 { vector<int> res; for(int i=1; i<=n/i; i++) if(n%i == 0) { res.push_back(i); ...

2020-03-29 12:05:43 151

原创 埃式筛法、欧拉筛法

文章目录埃氏筛法埃氏筛法![在这里插入代码片](https://img-blog.csdnimg.cn/20200328171125402.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dteTAyMTdf,size_16,color...

2020-03-28 21:22:35 180

原创 L2-010 排座位 (25分) 并查集

布置宴席最微妙的事情,就是给前来参宴的各位宾客安排座位。无论如何,总不能把两个死对头排到同一张宴会桌旁!这个艰巨任务现在就交给你,对任何一对客人,请编写程序告诉主人他们是否能被安排同席。输入格式:输入第一行给出3个正整数:N(≤100),即前来参宴的宾客总人数,则这些人从1到N编号;M为已知两两宾客之间的关系数;K为查询的条数。随后M行,每行给出一对宾客之间的关系,格式为:宾客1 宾客2 关系...

2020-03-27 21:24:44 132

原创 L2-022 重排链表 (25分)
原力计划

给定一个单链表L1→L2→⋯→Ln-1→Ln,请编写程序将链表重新排列为 Ln→L1→Ln-1→L2→⋯。例如:给定L为1→2→3→4→5→6,则输出应该为6→1→5→2→4→3。输入格式:每个输入包含1个测试用例。每个测试用例第1行给出第1个结点的地址和结点总个数,即正整数N (≤10^​5)。结点的地址是5位非负整数,NULL地址用−1表示。接下来有N行,每行格式为:Address ...

2020-03-25 21:24:14 514

原创 判断质数、分解质因数

文章目录什么是质数、合数判断质数分解质因数什么是质数、合数质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数,质数也叫素数。与质数相对的是合数,合数是指在大于1的整数中除了能被1和本身整除外,还能被其他数整除的数。判断质数bool is_prime(int n){ if(n < 2) return false; for(int i=2; i<=n/i;...

2020-03-24 20:25:42 451

原创 BFS应用——走迷宫

AcWing 844. 走迷宫给定一个n*m的二维整数数组,用来表示一个迷宫,数组中只包含0或1,其中0表示可以走的路,1表示不可通过的墙壁。最初,有一个人位于左上角(1, 1)处,已知该人每次可以向上、下、左、右任意一个方向移动一个位置。请问,该人从左上角移动至右下角(n, m)处,至少需要移动多少次。数据保证(1, 1)处和(n, m)处的数字为0,且一定至少存在一条通路。输入格式...

2020-03-21 11:49:33 165

原创 并查集算法

并查集操作、原理、代码实现、例题

2020-03-19 20:00:33 606

原创 L2-005 集合相似度 (25分) set

给定两个整数集合,它们的相似度定义为:Nc/Nt×100%。其中Nc 是两个集合都有的不相等整数的个数,Nt是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。输入格式:输入第一行给出一个正整数N(≤50),是集合的个数。随后N行,每行对应一个集合。每个集合首先给出一个正整数M(≤10^4),是集合中元素的个数;然后跟M个[0, 10 ^9]区间内的整数。之后一行给...

2020-03-18 22:14:36 307

原创 L2-002 链表去重 (25分)

给定一个带整数键值的链表 L,你需要把其中绝对值重复的键值结点删掉。即对每个键值 K,只有第一个绝对值等于 K 的结点被保留。同时,所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15,你需要输出去重后的链表 21→-15→-7,还有被删除的链表 -15→15。输入格式:输入在第一行给出 L 的第一个结点的地址和一个正整数 N(≤10^​5,为结点总数)。...

2020-03-18 21:13:45 262

原创 756. 蛇形矩阵

输入两个整数n和m,输出一个n行m列的矩阵,将数字 1 到 n*m 按照回字蛇形填充至矩阵中。具体矩阵形式可参考样例。输入格式输入共一行,包含两个整数n和m。输出格式输出满足要求的矩阵。矩阵占n行,每行包含m个空格隔开的整数。数据范围1≤n,m≤100输入样例:3 3输出样例:1 2 38 9 47 6 5方法一:#include<bits/stdc++.h&...

2020-03-15 20:57:11 320

原创 L1-049 天梯赛座位分配 (20分)

天梯赛每年有大量参赛队员,要保证同一所学校的所有队员都不能相邻,分配座位就成为一件比较麻烦的事情。为此我们制定如下策略:假设某赛场有 N 所学校参赛,第 i 所学校有 M[i] 支队伍,每队 10 位参赛选手。令每校选手排成一列纵队,第 i+1 队的选手排在第 i 队选手之后。从第 1 所学校开始,各校的第 1 位队员顺次入座,然后是各校的第 2 位队员…… 以此类推。如果最后只剩下 1 所学校的...

2020-03-15 18:05:33 117

原创 L1-064 估值一亿的AI核心代码 (20分)

以上图片来自新浪微博。本题要求你实现一个稍微更值钱一点的 AI 英文问答程序,规则是:无论用户说什么,首先把对方说的话在一行中原样打印出来;消除原文中多余空格:把相邻单词间的多个空格换成 1 个空格,把行首尾的空格全部删掉,把标点符号前面的空格删掉;把原文中所有大写英文字母变成小写,除了I;把原文中所有独立的 can you、could you 对应地换成 I can、I could...

2020-03-13 18:13:47 181 2

原创 Trie树(字典树)

含义:Trie树一般指字典树,又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。假设我们有五个字符串,code、cook、five、file、fat。现在需要在里面多次查找某...

2020-03-06 20:43:02 110

空空如也

空空如也

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