AcWing
文章平均质量分 59
# AcWing
superkcl2022
这个作者很懒,什么都没留下…
展开
-
ACWing 第五章 动态规划
文章目录背包问题AcWing 2. 01背包问题背包问题NNN个物品,背包体积 VVV, 不一定要装满背包01背包:每件物品最多用一次完全背包:每件物品有无限个多重背包:每个物品有SiS_iSi个,朴素版+优化版分组背包:NNN组,每组有若干个,水果组,蔬菜组,每组最多选择一物品,每组互斥子集划分:不重复,不漏动态规划=状态表示f(i,j)+状态计算动态规划=状态表示f(i,j)+状态计算动态规划=状态表示f(i,j)+状态计算状态表示f(i,j)=状态表示f(i,j)=状态表示f(i原创 2021-08-02 00:12:39 · 243 阅读 · 1 评论 -
AcWing 第四讲 数学知识
文章目录1. 质数质数的判定-试除法分解质因数-试除法AcWing 868. 筛质数1. 质数在 > 1的整数中, 如果只包含1和本身这两个约数,就是质数,也叫素数n <= 1不是质数质数的判定-试除法质数的约数都是成对出现的,可以枚举每一对中较小的那个// O(sqrt(n))bool is_prime(int n){ if(n <= 1) return false; for(int i = 2; i <= n / i; i++) // i * i <原创 2021-07-31 16:13:18 · 139 阅读 · 0 评论 -
AcWing 第三讲 搜索与图论
文章目录1. DFSAcWing 842. 排列数字AcWing 843. n-皇后问题2. BFSAcWing 844. 走迷宫AcWing 845. 八数码1. DFSAcWing 842. 排列数字AcWing 842. 排列数字#include <iostream>using namespace std;const int N = 7 + 11;int n; bool vis[N]; // 避免重复int p[N]; // 输出记录数组void dfs(int n原创 2021-07-28 14:43:56 · 221 阅读 · 0 评论 -
AcWing 《算法竞赛进阶指南》 0x00 基本算法
文章目录1.位运算AcWing 89. a^b1.位运算AcWing 89. a^bAcWing 89. a^b#include <iostream>using namespace std;int quick_mod(int a,int b,int q){ int res = 1; if(b == 0 && q == 1) res = 0; while(b){ if(b&1) res = 1ll*res*a % q;原创 2021-07-25 10:02:40 · 97 阅读 · 0 评论 -
Acwing 第二讲 数据结构 STL
文章目录1.单链表AcWing 826. 单链表2. 双链表AcWing 827. 双链表1.单链表AcWing 826. 单链表AcWing 826. 单链表idx万岁#include <iostream>#include <cstring>using namespace std;const int N = 100010;int M;int e[N],ne[N];int head,idx; //head为头结点的数组下标,idx为即将使用的数组下标void原创 2021-07-23 11:37:02 · 195 阅读 · 1 评论 -
AcWing 第一讲 基础算法
文章目录快速排序AcWing 785. 快速排序AcWing 786. 第k个数快速排序AcWing 785. 快速排序#include <iostream>using namespace std;const int N = 1e5 + 1;int cnt[N];// 有等号 + 无等号 + 有等号 是最好的选择 101void quick_sort(int l,int r){ if(l >= r) return; //可以无视等号 int pivot原创 2021-07-11 22:59:10 · 171 阅读 · 0 评论 -
AcWing-并查集-合并路径
文章目录并查集acwing-836 合并路径并查集将两个集合合并询问两个元素是否在一个集合当中O(1)近乎O(1)基本原理:每个集合用一棵树来表示,树根的编号就是整个集合的编号。每个节点存储他的父节点,p[x]表示x的父节点问题1:如何判断树根: if(p[x] == x)问题2: 如何求x(树根编号)的集合编号:while(p[x]!=x) x = p[x];问题3: 如何合并两个集合?px是x的集合编号,py是y的集合编号,px = y;路径压缩优化acwing-836 合原创 2021-05-20 11:31:28 · 107 阅读 · 0 评论 -
AcWing-KMP
文章目录暴力算法暴力算法原创 2021-05-19 22:38:43 · 113 阅读 · 0 评论 -
AcWing-【位运算】
文章目录lowbit右移一位1for(int k = 4; k >= 0; k--) cout << (n>>k & 1);01010lowbit原创 2021-05-15 22:26:30 · 68 阅读 · 0 评论 -
AcWing-【前缀和】【子矩阵的和】【差分】
文章目录前缀和子矩阵的和前缀和S0 = 0Si = A1 + A2 + ... + Aii不能为1作用:求[l,r]的和 = S[r]-S[l-1]for(int i = 1; i <= n; i++) cin >> arr[i];s[0] = 0;for(int i = 1; i <= n; i++) s[i] = s[i] + arr[i] + s[i-1];子矩阵的和输入一个 n 行 m 列的整数矩阵,再输入 q 个询问,每个询问包含四个整数 x1,y原创 2021-05-15 18:16:48 · 104 阅读 · 0 评论 -
AcWing-第k大数-【快排】【O(n)】
给定一个长度为 n 的整数数列,以及一个整数 k,请用快速选择算法求出数列从小到大排序后的第 k 个数。输入格式第一行包含两个整数 n 和 k。第二行包含 n 个整数(所有整数均在 1∼109 范围内),表示整数数列。输出格式输出一个整数,表示数列的第 k 小数。数据范围1≤n≤100000,1≤k≤n输入样例:5 32 4 1 5 3输出样例:3#include <iostream>using namespace std;const int maxn = .原创 2021-05-15 11:08:19 · 143 阅读 · 0 评论 -
AcWing-高精度-加法-减法-乘法
文章目录高精度加法高精度加法#include <iostream>#include <vector>using namespace std;const int N = 200 + 11;vector<int> add(vector<int>& v1,vector<int>& v2){ vector<int> res; int t = 0; int i = 0,j = 0; while(i <原创 2021-05-14 11:17:38 · 95 阅读 · 1 评论 -
AcWing-789. 数的范围-【二分】【小数二分】
文章目录题目C++ 自定义二分题目给定一个按照升序排列的长度为 n 的整数数组,以及 q 个查询。对于每个查询,返回一个元素 k 的起始位置和终止位置(位置从 0 开始计数)。如果数组中不存在该元素,则返回 -1 -1。输入格式第一行包含整数 n 和 q,表示数组长度和询问个数。第二行包含 n 个整数(均在 1∼10000 范围内),表示完整数组。接下来 q 行,每行包含一个整数 k,表示一个询问元素。输出格式共 q 行,每行包含两个整数,表示所求元素的起始位置和终止位置。如果数组中原创 2021-05-13 22:28:34 · 654 阅读 · 0 评论 -
AcWing-归并排序
#include <iostream>using namespace std;const int N = 1e5 + 11;int a[N],b[N];void merge_sort(int a[],int l,int r){ if(l >= r) return; int mid = (l+r) >> 1; merge_sort(a,l,mid); merge_sort(a,mid+1,r); int k = 0;原创 2021-05-13 17:30:34 · 94 阅读 · 1 评论