- 博客(15)
- 收藏
- 关注
原创 acwing算法基础课笔记6(二)
1,排序不等式最小的放最前面,被计算的次数是n-i次总时间的公式:(t[i] * (n - i - 1))#include <iostream>#include <algorithm>using namespace std;const int N = 1e5 + 10;typedef long long LL;int t[N];int n;int main(){ cin>>n; for(int i=0;i<n;i++)
2022-02-16 21:35:40
708
原创 acwing算法基础课笔记6(一)
贪心算法:用局部最优解推出全局最优,难点:如何证明这样的选法解法是正确的?一,区间问题1.区间选点代码:#include <iostream>#include <algorithm>using namespace std;const int N = 1e5 + 10;int n;struct Range{ int l; int r; bool operator< (const Range &W) { return r.
2022-02-15 20:11:22
457
原创 acwing算法基础课笔记5(二)
1、线性dp一般是线性问题较简单,思路与之前背包问题一样需要注意的是右上边那一斜的数,我们在计算他们时,会用到他们的右上,所以初始化时要多出来一个i+1;代码:#include <iostream>#include <algorithm>using namespace std;const int N = 510, INF = 1e9;int n;int a[N][N];int f[N][N];int main(){ cin>&g.
2022-01-26 16:24:58
903
原创 acwing算法基础课笔记5(一)
背包问题分类1.01背包 (每个物品最多用一次)初始版代码:#include <iostream>#include <algorithm>using namespace std;const int N = 1010;int n, m;int v[N], w[N];int f[N][N];int main(){ cin>>n>>m; for(int i=1;i<=n;i++) cin>>v...
2022-01-19 16:39:18
987
原创 acwing算法基础课笔记4(四)
一、容斥原理题目思路:求素数倍数,n除p下取整,交集除以p1,p2的积代码:#include <iostream>#include <algorithm>using namespace std;const int N = 20;typedef long long LL;int n, m;int p[N];int main(){ cin >> n >> m; for(int i = 0; i < m;..
2022-01-15 16:25:24
2419
原创 acwing算法基础课笔记4(三)
高斯消元求解线性方程组,其实就是线代求解,思想是利用增广矩阵来求高斯消元的步骤(线代hh):#include<iostream>#include<algorithm>#include<cmath>using namespace std;const int N = 110;const double eps = 1e-6;int n;double a[N][N];int gauss(){ int c, r; for(c=..
2021-11-26 21:13:44
369
原创 acwing算法基础课笔记4(二)
数论知识:1、欧拉函数欧拉函数 O(N)=1到N中所有与N互质的数的个数,如果可以把N写成它的分解质因数公式:N=p1的a1次方 * p2的a2次方 * .....pk的ak次方则它的欧拉函数等于N*(1-1/p1)*(1-1/p2)*...(1-1/pk),这是由容斥原理得到的(数学集合论),我们将n减去所有它的因子的倍数,这其中有些数被减了两次,如p1,p2共同的倍数,我们再逐一加上每两个数的倍数,再减去每三个数的倍数...就能得到与N互质的数的个数了。#inc..
2021-11-17 21:34:04
162
原创 acwing算法基础课笔记4(一)
第四章 数学知识——数论1、质数判断一个数是质数:当这个数大于1,且只包含1和它本身这两个约数。1)质数的判定——试除法:i从2到sqrt (n)就可判断,但是不推荐直接用sqrt,因为它很慢,也不推荐i*i<=n,因为可能会有溢出风险。#include<iostream>#include<algorithm>using namespace std;bool isprime(int n){ if(n<2) return false;.
2021-11-15 20:12:23
561
原创 acwing算法基础课笔记3(三)
最小生成树与二分图最小生成树:prim算法类似于dijkstra算法,也分为朴素版和堆优化版,朴素版适用于稠密图,而堆优化版的适用于稀疏图,时间复杂度也与dijkstra算法相似,而kruskal算法的时间复杂度是mlogm的,且思路比堆优化版的prim算法简单。所以稠密图我们用朴素prim,稀疏图我们使用kruskal算法。二分图:判断二分图使用染色法dfs,匈牙利算法求二分图的最大匹配,非常重要。1、prim算法最小生成树没有环将所有点距离设置成无穷大,然后迭代n次,.
2021-11-14 18:07:21
644
原创 acwing算法基础课笔记3(二)
最短路问题最短路问题分为单源最短路和多源汇最短路,单源最短路分为所有边权都为正值和具有负权边两种,当所有边权都为正值时,我们有朴素dijkstra和堆优化dijkstra算法两种。时间复杂度分别为n方和mlogn,所以对于边多的题目,选择朴素dijkstra,边和点一样多的稀疏图我们选择堆优化dijkstra算法。具有负权边的图我们也有两种算法:bellman——ford和SPFA算法两种,复杂度分别为nm和m,SPFA算法复杂度是对bellman算法的优化,它是线性的,最坏情况下为o(nm);当限
2021-11-11 23:09:53
433
原创 acwing算法基础课笔记3(一)
矩阵序历历其中存储};;;));{)};}} ;;{);{);{);;;;{);;;;;;;;>>m>。短)};;}};{){);{)}} ;;;;{)后后};};};{){){);{);;;;;m>点};;}};{){);{) }};;;;;{ ){) ;;};{){){);;;;;m>。题)};;;{)}}} ;;;{){)};;};{){){);;;;;m>。)!S...
2021-11-11 01:33:53
461
原创 acwing算法基础课笔记2
第二讲 数据结构1.数组模拟单链表、双链表、栈、队列,只需要用数组和指针来存储即可,略。单调栈和单调队列:应用范围非常少,一只手数得过来的那种,单调栈用于解决求一个序列中每一个数它的左边第一个小于等于它的数,我们通过暴力算法看下里面数的规律,得出如果存在a3>a5等情况,那么在a5右边的数都不可能选择a3,这意味着a3没有任何意义了,所以我们将数据读入栈,维护一个单调递增的栈,每当读入的数比栈顶小,说明该数的优先级比栈顶更高,我们通过while弹出栈顶元素,找到第一个小于等于新读入的数
2021-10-25 19:05:19
375
原创 acwing算法基础课笔记
第一章基础算法(一):一、快速排序:1.确定区间中的某一点,如a[l],a[r],a[(l+r)/2]等等,2.将数组分为左右两边,左边全为比分界点小的数,右边全为比分界点大的数,代码实现:void quick_sort(int q[],int l,int r){ if(l>=r) return 0;//meiyoushu int i=l-1,j=r+1; int x=q[l]; while(i<j) { do i++; wh
2021-09-09 21:10:45
5990
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人