自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 acwing算法基础课笔记7

时间复杂度分析

2022-02-19 21:12:58 236

原创 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先跳过

2022-02-05 18:09:13 561

原创 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关注的人

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