- 博客(10)
- 收藏
- 关注

原创 BFS宽度优先搜索——以acwing例844为例
BFS模板:queue 初始while queue 确定{ t 对头 拓展 t}844. 走迷宫给定一个n*m的二维整数数组,用来表示一个迷宫,数组中只包含0或1,其中0表示可以走的路,1表示不可通过的墙壁。最初,有一个人位于左上角(1, 1)处,已知该人每次可以向上、下、左、右任意一个方向移动一个位置。请问,该人从左上角移动至右下角(n, m)处,至少需要移动多少次。数据保证(1, 1)处和(n, m)处的数字为0,且...
2020-09-24 14:58:18
162

原创 差分
差分一维差分a1,a2,...an构造:b1,b2...bn使得:ai=b1+b2+..bia成为b的前缀和,b成为a的差分一维差分(功能:选定一段数字,将其全部加上c)如图将bi+c,bj+1-c,这样a【i,j】区域内的a值都会加上c#include <iostream>using namespace std;const int N = 100010;int n, m;int a[N], b[N];void insert(int ..
2020-09-13 17:28:13
190

原创 前缀和
前缀和一维前缀和就是求si=a1+a2+a3+...+ai功能:能快速求出数组中一段数字之和求【l,r】这一段的和=s[l]-s[r-1]模板:#include<iostream>using namespace std;const int N=100010;int n,m;int a[N],s[N];int main(){ scanf("%d%d",&n,&m); for(int i=1;i<=n;i++)//输入..
2020-09-13 17:13:32
209

原创 DFS(深度优先搜索)——以842排列数字为例
DFS与BFS的区别相同点:都是树结构进行搜索不同点:DFS:从开头一直向叶节点搜,然后回溯 BFS:一层一层搜索
2020-09-13 11:02:16
161

原创 堆——以洛谷p3378,p1334,p1628,p1878为例
堆堆的五个基本操作:1.在集合中插入一个数 heap[++size]=x ; up[size]2.求集合当中的最小值 heap[1]3.删除最小值 heap[1]=heap[size] ; size-- ; down(1)4.删除任意一元素 heap[k]=heap[size] ; size-- ; down(k) ; up(k)5.修改任一元素 ...
2020-08-21 08:28:51
536

原创 快速排序和归并排序的比较
快速排序和归并排序的比较#include<iostream> #incude<iostream>using namespace std; using namespace std;const int N=1000010; const int N=1000010;int n; ...
2020-07-17 21:51:00
383

原创 高精度(C++)——791、792、793、794
例题791题目:给定两个正整数,计算它们的和。输入格式共两行,每行包含一个整数。输出格式共一行,包含所求的和。答案#include <iostream>using namespace std;const int N = 100010;int A[N], B[N], C[N];int Add(int a[], int b[], int c[], int cnt) { int t = 0;//t表示进位 for (int i=1; i<
2020-07-10 21:17:42
314

原创 二分(C++)——789、790
二、二分2.1整数二分(789、790) true [mid,r] l=mid1. mid=(1+l+r)/2 false [l,mid-1] r=mid-1 true [l,mid] r=mid2. mid=(l+lir)/2 ...
2020-07-10 21:10:00
2135

原创 归并排序(C语言)——例题787、788
一、归并排序1确定分界点2递归排序模板:#include<stdio.h>#define N 1000010int n;int q[N],tmp[N];void merge_sort(int q[],int l,int r){ if(l >= r) return; //确定整个区间有数字,若无数字直接return int mid=l + r >> 1; //确定分界点mid merge_sor
2020-07-07 20:36:06
602

原创 快速排序(C语言)——例题785、786
一、快速排序(例题 785、786)1确定分界点2调整区间3递归处理左右两段模板:#include<stdio.h>#include<stdlib.h>#define N 100010int n;int q[N];void quick_sort(int q[],int l,int r){ if(l>=r) return; int x=q[(l+r)>>1],i=l-1,j=r+1; //1选择分界点x=q[(l+
2020-07-07 20:05:48
1961
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人