自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 acwing自我学习笔记--图中点的层次 847

#include <iostream>#include <cstring>#include <queue>using namespace std;const int N = 1e5 + 10;int h[N], e[N], ne[N], idx;//和单链表一样,用h[]表示邻接多重表,有向图int n, m;int d[N];void link(int a, int b){ e[idx] = b; ne[idx] = h[a];...

2022-02-19 21:24:31 430

原创 acwing自我学习笔记--树的重心846

#include <iostream>#include <cstring>using namespace std;const int N = 1e5+10;int h[2*N], e[2*N], ne[2*N], idx;//和单链表一样,用h[]表示邻接多重表,a,b互相指向对方最多2*nbool st[N];//标记访问情况int n;int ans =N;//默认连通块最大为N个结点void link(int a, int b){ e[idx].

2022-02-19 19:43:12 297

原创 acwing自我学习笔记--八数码 845

#include <iostream>#include <algorithm>#include <unordered_map>#include <queue>using namespace std;int bfs(string state){ queue<string> q; q.push(state);//入队 unordered_map<string, int> d;//利用hash表标记移动...

2022-02-17 20:46:44 356

原创 acwing自我学习笔记--走迷宫 844

#include <cstring>#include <iostream>#include <algorithm>#include <queue>using namespace std;typedef pair<int, int> PII;const int N = 110;int n, m;int g[N][N], d[N][N];int bfs(){ queue<PII> q; q.pu...

2022-02-16 21:10:49 225

原创 acwing自我学习笔记--n-皇后问题 843

#include <iostream>#include <cstring>using namespace std;const int N = 10;char g[N][N];//棋盘int col[N],dg[N*2], udg[N*2];int n;void DFS(int x){ if (x == n)//已放置n个皇后了 { for (int i = 0; i < n; i++) { ...

2022-02-15 21:47:17 300

原创 acwing自我学习笔记--排列数字 842

#include <iostream>#include <cstring>using namespace std;const int N = 10;int path[N];bool state[N];int n;void DFS(int x){ if(x>n)//结束条件:遍历到最后一位了 { for (int i = 1; i <= n; i++) { cout <<...

2022-02-14 21:35:45 61

原创 acwing自我学习笔记-字符串哈希 841

#include <iostream>#include <cstring>using namespace std;typedef unsigned long long ULL;const int N =1e5+10,P=131;//p=13331 p%q ,q=2^64一般不会产生冲突char str[N];ULL h[N], p[N];ULL get(int l, int r){ return h[r] - h[l - 1] * p[r - l + 1]..

2022-02-11 20:33:58 692

原创 acwing自我学习笔记-模拟散列表 840

#include <iostream>#include <cstring>using namespace std;const int N = 1e5 + 3;int h[N],e[N], ne[N], idx;//拉链法,用数组方式代替struct结构方式构造链表,ne[]指向下个结点的位置void Insert(int x){ int t = (x % N+N)%N;//hash值 e[idx] = x; ne[idx] = h[t]; ...

2022-02-11 09:06:23 709

原创 acwing自我学习笔记-模拟堆 839

#include <iostream>#include <algorithm>#include <string.h>using namespace std;const int N = 1e5+10;int h[N],hp[N],ph[N];//h[]堆,ph[i]指向该点i所在的堆的下标,hp[i]指向所在的ph[]的位置,即hp[i]=k 则ph[k]=i;int cnt;//充当指针,同时表明堆每个元素的位置void swap(int &a

2022-02-08 21:14:09 378

原创 acwing自我学习笔记-堆排序 838

#include <iostream>#include <algorithm>using namespace std;const int N = 1e5+10;int hp[N];int idx;void Down(int u){ int t = u; if (2 * u <= idx && hp[t] > hp[2 * u]) { t = 2 * u; } if (2 * u +...

2022-02-07 17:46:21 227

原创 acwing自我学习笔记-食物链 240

#include <iostream>using namespace std;const int N = 5e5+10;int p[N],d[N];int Find(int x){ if (x != p[x]) { int t = Find(p[x]); d[x] += d[p[x]];//到父结点的距离 p[x] = t; } return p[x];}int main(){ in...

2022-02-07 15:56:28 148

原创 acwing 自我学习笔记-连通块中点的数量

#include <iostream>using namespace std;const int N = 1e5;int p[N];int Size[N];int Find(int x){ if (x != p[x]) { p[x] = Find(p[x]); } return p[x];}void Merge(int a, int b){ if (Find(a) != Find(b)) { ...

2022-02-07 09:30:59 366

原创 acwing 自我学习笔记-合并集合 836

一共有n个数,编号是1∼n,最开始每个数各自在一个集合中。现在要进行m个操作,操作共有两种:M a b,将编号为a和b的两个数所在的集合合并,如果两个数已经在同一个集合中,则忽略这个操作; Q a b,询问编号为a和b的两个数是否在同一个集合中;输入格式第一行输入整数n和m。接下来m行,每行包含一个操作指令,指令为M a b或Q a b中的一种。输出格式对于每个询问指令Q a b,都要输出一个结果,如果aa和bb在同一集合内,...

2022-02-06 16:59:03 463

原创 acwing 自我学习笔记-最大异或对 143

#include <iostream>using namespace std;const int N = 1e5, M = 31 * N;int son[M][2];int idx;int a[N];void Insert(int x){ int p = 0; for (int i = 30; i >= 0; i--)//由高位二进制数进行存储数据,p为根结点同时为空结点 { int u = (x >> i) &amp...

2022-02-06 16:30:40 281

原创 acwing 自我学习笔记-Trie字符串统计 835

#include <iostream>#include <string>#include <stdio.h>using namespace std;const int N = 1e5;int son[N][26];int cnt[N];int idx;//类似于struct结构中new一个新的结点的方式void Insert(string x){ int p = 0;//表明从根结点开始进行查找,同时根结点为空结点 for (in...

2022-02-06 10:42:14 753

转载 acwing 自我学习笔记-KMP

#include <cstring>#include <iostream>#include <algorithm>using namespace std;const int N = 1000010;int n, m;string p, s;int ne[N];int main(){ cin >> m >> p >> n >> s; ne[0] = -1; for (int ...

2022-02-02 22:48:27 60

原创 acwing 自我学习笔记-滑动窗口 154

#include <stdio.h>using namespace std;const int N = 1e6 + 10;int a[N], q[N];//a[]存储数据,q[]存储下标int main(){ int n,k; scanf("%d %d", &n, &k); int head=0, tail=-1;//队列头尾指针 for (int i = 0; i < n; i++) { scanf(...

2022-01-30 22:11:45 442

原创 acwing 自我学习笔记-单调栈 830

#include <iostream>#include <stack>using namespace std;const int N = 1e5 + 10;int main(){ int n; cin >> n; stack<int> order; int x; for (int i = 0; i < n; ++i) { cin >> x; while...

2022-01-28 22:34:58 595

原创 acwing 自我学习笔记-模拟队列

#include <iostream>using namespace std;const int N = 1e5 + 10;int que[N];int pr, ta;//模拟头尾指针void Initial(){ pr = 0; ta = -1;}void Push(int x){ ta++; que[ta] = x;}void Pop(){ pr++;}bool Empty(){ return pr &gt...

2022-01-23 22:09:30 141

原创 acwing 自我学习笔记-表达式求值 3302

给定一个表达式,其中运算符仅包含+,-,*,/(加 减 乘 整除),可能包含括号,请你求出表达式的最终值。注意:数据保证给定的表达式合法。 题目保证符号-只作为减号出现,不会作为负号出现,例如,-1+2,(2+2)*(-(1+1)+2)之类表达式均不会出现。 题目保证表达式中所有数字均为正整数。 题目保证表达式在中间计算过程以及结果中,均不超过231−1231−1。 题目中的整除是指向00取整,也就是说对于大于00的结果向下取整,例如5/3=15/3=1,对于小于00...

2022-01-23 21:30:06 80

原创 acwing 自我学习笔记-模拟栈 828

实现一个栈,栈初始为空,支持四种操作:push x– 向栈顶插入一个数x; pop– 从栈顶弹出一个数; empty– 判断栈是否为空; query– 查询栈顶元素。现在要对栈进行MM个操作,其中的每个操作33和操作44都要输出相应的结果。输入格式第一行包含整数MM,表示操作次数。接下来MM行,每行包含一个操作命令,操作命令为push x,pop,empty,query中的一种。输出格式对于每个empty和query操作都要输出一个查询...

2022-01-22 11:38:50 372

原创 acwing 自我学习笔记-AcWing 827. 双链表

#include <iostream>#include <vector>#include <algorithm>using namespace std;const int N = 1e5 + 10;int cur;//是cur当前空结点,head头指针int e[N], L[N],R[N];//e[]存储链表,L[],R[]分别为左右指针,相当于struct{ }结构体中的左指针(指向左边)和右指针(指向右边)void Insert(int k,int

2022-01-21 21:41:27 262

原创 acwing 自我学习笔记-单链表 826

实现一个单链表,链表初始为空,支持三种操作:向链表头插入一个数; 删除第k个插入的数后面的数; 在第kk个插入的数后插入一个数。现在要对该链表进行MM次操作,进行完所有操作后,从头到尾输出整个链表。注意:题目中第k个插入的数并不是指当前链表的第k个数。例如操作过程中一共插入了n个数,则按照插入的时间顺序,这n个数依次为:第11个插入的数,第2个插入的数,…第n个插入的数。输入格式第一行包含整数M,表示操作次数。接下来M行,每行包含一个操作命令,...

2022-01-20 20:30:40 76

原创 acwing 自我学习笔记-区间合并 803

给定 n 个区间 [li,ri][li,ri],要求合并所有有交集的区间。注意如果在端点处相交,也算有交集。输出合并完成后的区间个数。例如:[1,3][1,3] 和 [2,6][2,6] 可以合并为一个区间 [1,6][1,6]。输入格式第一行包含整数 nn。接下来 n 行,每行包含两个整数 l 和 r。输出格式共一行,包含一个整数,表示合并区间完成后的区间个数。数据范围1≤n≤1000001≤n≤100000,−109≤li≤ri≤109−109≤li≤ri≤10

2022-01-16 17:55:19 300

原创 acwing 自我学习笔记-区间和 802

#include <iostream>#include <vector>#include <algorithm>using namespace std;typedef pair<int, int> PII;const int N = 300010;int a[N], s[N];//a[],s[]用于构造前缀和(acwing 自我学习笔记-前缀和 795)int n, m;vector<int> alls;//数据位置下标映射存储

2022-01-15 21:44:42 232

原创 acwing 自我学习笔记-二进制中1的个数 801

给定一个长度为nn的数列,请你求出数列中每个数的二进制表示中11的个数。输入格式第一行包含整数nn。第二行包含nn个整数,表示整个数列。输出格式共一行,包含nn个整数,其中的第ii个数表示数列中的第ii个数的二进制表示中11的个数。数据范围1≤n≤1000001≤n≤100000,0≤数列中元素的值≤1090≤数列中元素的值≤109输入样例:51 2 3 4 5输出样例:1 1 2 1 2#include <ios...

2022-01-13 18:35:19 211

原创 acwing 自我学习笔记- 判断子序列(双指针) 2816

给定一个长度为nn的整数序列a1,a2,…,ana1,a2,…,an以及一个长度为mm的整数序列b1,b2,…,bmb1,b2,…,bm。请你判断aa序列是否为bb序列的子序列。子序列指序列的一部分项按原有次序排列而得的序列,例如序列{a1,a3,a5}{a1,a3,a5}是序列{a1,a2,a3,a4,a5}{a1,a2,a3,a4,a5}的一个子序列。输入格式第一行包含两个整数n,mn,m。第二行包含nn个整数,表示a1,a2,…,ana1,a2...

2022-01-13 17:47:42 48

原创 acwing 自我学习笔记-数组元素的目标和(双指针) 800

给定两个升序排序的有序数组AA和BB,以及一个目标值xx。数组下标从00开始。请你求出满足A[i]+B[j]=xA[i]+B[j]=x的数对(i,j)(i,j)。数据保证有唯一解。输入格式第一行包含三个整数n,m,xn,m,x,分别表示AA的长度,BB的长度以及目标值xx。第二行包含nn个整数,表示数组AA。第三行包含mm个整数,表示数组BB。输出格式共一行,包含两个整数ii和jj。数据范围数组长度不超过105105...

2022-01-13 17:07:45 108

原创 acwing 自我学习笔记-最长连续不重复子序列(双指针) 799

给定一个长度为nn的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。输入格式第一行包含整数nn。第二行包含nn个整数(均在0∼1050∼105范围内),表示整数序列。输出格式共一行,包含一个整数,表示最长的不包含重复的数的连续区间的长度。数据范围1≤n≤1051≤n≤105输入样例:51 2 2 3 5输出样例:3#include <iostream>using namespace std;const in...

2022-01-13 16:28:59 62

原创 acwing 自我学习笔记-差分 797

输入一个长度为nn的整数序列。接下来输入mm个操作,每个操作包含三个整数l,r,cl,r,c,表示将序列中[l,r][l,r]之间的每个数加上cc。请你输出进行完所有操作后的序列。输入格式第一行包含两个整数nn和mm。第二行包含nn个整数,表示整数序列。接下来mm行,每行包含三个整数l,r,cl,r,c,表示一个操作。输出格式共一行,包含nn个整数,表示最终序列。数据范围1≤n,m≤1000001≤n,m≤100000,...

2022-01-11 21:18:28 256

原创 acwing 自我学习笔记-前缀和 795

输入一个长度为nn的整数序列。接下来再输入 mm 个询问,每个询问输入一对 l,rl,r。对于每个询问,输出原序列中从第 ll 个数到第 rr 个数的和。输入格式第一行包含两个整数 nn 和 mm。第二行包含 nn 个整数,表示整数数列。接下来 mm 行,每行包含两个整数 ll 和 rr,表示一个询问的区间范围。输出格式共 mm 行,每行输出一个询问的结果。数据范围1≤l≤r≤n1≤l≤r≤n,1≤n,m≤1000001≤n,m≤100000,−1000≤数列..

2022-01-11 21:04:49 360

原创 acwing 自我学习笔记-高精度

#include <iostream>#include <vector>#include <string>#include <algorithm>using namespace std;//加法vector<int> add(vector<int>&A ,vector<int> &B){ vector<int> C; int t =0; for(int ...

2022-01-09 21:25:57 248

原创 acwing 自我学习笔记-归并算法(双指针)

const int N = 100010;int n;int q[N],temp[N]; //数组数据 和 辅助数组void merge_sort(int q[], int l, int r,long long &num){ if(l>=r) //如果左边界大于右边界或者区间只有一个数时不再划分排序 { return; } /*思路与快排相反 归并:先划分整个边界直到不能划分后再排序 合并后继续排序 快排:先划分一次分界点 .

2022-01-08 17:41:58 637

原创 acwing 自我学习笔记-快排及遇到的问题

acwing 自我学习笔记-快排及遇到的问题

2022-01-07 12:12:58 543

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

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