acwing-算法基础课、提高课
文章平均质量分 58
acwing-算法基础课、提高课题解
ForLiege
这个作者很懒,什么都没留下…
展开
-
Acwing 基础课—数据结构—单链表、双链表(数组模拟)
单链表,后续邻接表的基础——常用来存储树和图此处使用数组模拟单链表,结构体方法在 new Struct 时非常费时。使用e[N]存储元素,ne[N]存储next值。两者通过坐标关联。单链表如下所示1 单链表题目链接https://www.acwing.com/problem/content/description/828/题目大意实现一个单链表,链表初始为空,支持三种操作:(1) 向链表头插入一个数;(2) 删除第k个插入的数后面的数;(3) 在第k个插入的数后插入一个数现在要对该原创 2021-03-05 16:35:41 · 1007 阅读 · 0 评论 -
Acwing 基础课—基础算法—双指针算法
1 最长连续不重复子序列题目链接https://www.acwing.com/problem/content/description/801/题目大意给定一个长度为n的整数序列,请找出最长的不包含重复的数的连续区间,输出它的长度。解题思路https://www.acwing.com/solution/content/6460/核心思路:1 遍历数组a中的每一个元素a[i], 对于每一个i,找到j使得双指针[j, i]维护的是以a[i]结尾的最长连续不重复子序列,长度为i - j + 1, 将原创 2021-03-04 13:59:04 · 508 阅读 · 1 评论 -
Acwing 基础课—基础算法—离散化、区间合并
1 离散化——区间和题目链接https://www.acwing.com/problem/content/description/804/题目大意假定有一个无限长的数轴,数轴上每个坐标上的数都是0。现在,我们首先进行 n 次操作,每次操作将某一位置x上的数加c。接下来,进行 m 次询问,每个询问包含两个整数l和r,你需要求出在区间[l, r]之间的所有数的和。−109≤x≤109 ,1≤n,m≤105,−109≤l≤r≤109,−10000≤c≤10000解题思路参考链接https原创 2021-03-04 11:21:00 · 247 阅读 · 0 评论 -
Acwing 基础课—基础算法—位运算
1 二进制中1的个数题目链接https://www.acwing.com/problem/content/803/题目大意给定一个长度为n的数列,请你求出数列中每个数的二进制表示中1的个数。解题思路一 暴力对于每一个数字a,a & 1得到了该数字的最后一位是1或者0,统计为1的次数,之后将a右移一位,直到为0#include<bits/stdc++.h>using namespace std;int main(){ int n; cin >>原创 2021-03-02 21:31:53 · 291 阅读 · 0 评论 -
Acwing 基础课—基础算法—前缀和与差分
1 前缀和题目链接https://www.acwing.com/problem/content/description/797/题目大意输入一个长度为 n 的整数序列。接下来再输入 m 个询问,每个询问输入一对 l,r。对于每个询问,输出原序列中从第 l 个数到第 r 个数的和。解题思路一维前缀和序列中,求第l个数~第r个数的和 ,等于 a[r] - a[l - 1]#include<stdio.h>const int N = 100005;long long a[N] =原创 2021-02-22 14:15:16 · 470 阅读 · 0 评论 -
Acwing 基础课—基础算法—高精度加减乘除模板
1 高精度加法题目链接https://www.acwing.com/problem/content/793/题目大意给定两个正整数,计算它们的和。位数100000#include<stdio.h>#include<iostream>#include<string>#include<algorithm>using namespace std;const int N = 100010;int A[N],B[N],C[N];// A+B=C原创 2021-02-22 12:54:10 · 671 阅读 · 0 评论 -
Acwing 基础课—基础算法—二分排序
二分排序模板在一个升序序列中,求一个数第一次出现的位置、最后一次出现的位置,不存在返回-1int first_pos(){ int l = 0; int r = n - 1; while(l < r){ int mid = (l + r) / 2; if(a[mid] < x){ l = mid + 1; }else{ r = mid; } }原创 2021-02-21 21:41:08 · 230 阅读 · 0 评论 -
Acwing 基础课—基础算法—归并排序
归并排序模板 稳定O(n*log n) 空间O(n)参考链接https://www.acwing.com/solution/content/2099/#include<stdio.h>const int N = 100005;int a[N];int t[N];void ms(int l,int r){ if(l >= r) return ; int mid = l + r >> 1; ms(l,mid);ms(mid+1,r);原创 2021-02-21 18:34:04 · 332 阅读 · 0 评论 -
Acwing 基础课—基础算法—快速排序
快速排序模板参考链接https://www.acwing.com/solution/content/2096/核心思想就是快排的每一趟,数轴的左边都会是 <= x 的, 右边都是 >= x 的。#include<bits/stdc++.h>using namespace std;int a[100005];void qs(int l,int r){ if(l >= r) return; int i = l - 1; int原创 2021-02-21 16:48:51 · 406 阅读 · 0 评论