当前位置: 首页 > news >正文

常用算法汇总

作者:指针不指南吗
专栏:算法篇

🐾算法思维逻辑🐾

文章目录

    • 1.判断闰年
    • 2.计算从某天到某天的天数
    • 3.二分
    • 4. 前缀和
    • 5.差分
    • 6.图论
      • 6.1dfs
      • 6.2走迷宫
    • 7.最短路
      • 7.1dijkstra
      • 7.2foly
    • 8.并查集
    • 9.数论
      • 9.1gcd lcm
      • 9.2判断素数(质数)
      • 9.3分解质因子
      • 9.4快速幂
    • 10.位运算
      • 10.1整数的奇偶性判断
      • 10.2有关 2 的幂的应用
      • 10.3 lowbit(x)返回x的最后一位1
      • 10.4二进制数中1的个数
      • 10.5求二进制位的某一位是几
      • 10.6交换两个整型变量的值
      • 10.7数组中x出现的次数
    • 11.背包问题
    • 12.动态规划
    • 13.STL
    • 14. 字符串
    • 15.拿分

常用math函数
1.fabs(double x)对double变量取绝对值

2.pow(double r,double p)返回r的p次方 int 型同理

3.sqrt(double x)返回算术平方根

4.log(double x)返回以自然数为底的对数

如果想log a(b) = log(b) / log(a)

1.判断闰年

bool is_leap(int year)
{return year%400==0||(year%4!=0&&year%100!=0);
}

2.计算从某天到某天的天数

int end_year , end_month , end_day ;
int count_day(int year , int month , int day){int ans = 0 ;int mon[13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};while(1){if(end_year==year && end_month == month && end_day == day){break ;}day++;if(isLeaf(year) && month==2){if(day>mon[month]+1){month++;day=1;}}else{if(day>mon[month]){month++;day=1;}}if(month>12){month=1;year++;}ans++;}return ans;
}

3.二分

新的二分模板

  1. 判断条件:l+1!=r
  2. 求最左边,a[mid]>=k
    求最右边,a[mid]<=k
  3. 操作都是mid=l\mid=r

判断等于号跟着谁
等于号跟着大于 就是找的是左边小的
小于 就是找的右边大的

acwing 791 数的范围

#include<bits/stdc++.h>
using namespace std;const int N=1e5+10;int n,q;
int a[N];int find(int k)
{int l=-1,r=n;while(l+1!=r){int mid=(l+r)/2;if(a[mid]<=k) l=mid;else r=mid;}return l;
}int find2(int k)
{int l=-1,r=n;while(l+1!=r){int mid=(l+r)/2;if(a[mid]>=k) l=mid;else r=mid;}return r;
}int main()
{cin>>n>>q;for(int i=0;i<n;i++)cin>>a[i];while(q--){int k;cin>>k;int l=-1,r=n;while(l+1!=r)  //左边 小的{int mid=(l+r)/2;if(a[mid]>=k) r=mid;else l=mid;}if(k==a[r]){cout<<r<<' ';l=-1,r=n;while(l+1!=r)    //右边  大的{int mid=(l+r)/2;if(a[mid]<=k) l=mid;else r=mid;}cout<<l<<endl;}else{puts("-1 -1");}}return 0;
}

4. 前缀和

作用求区间和

scanf("%d",&a[i]);
s[i]+=a[i];

5.差分

#include<bits/stdc++.h>
using namespace std;const int N=1e5+10;int a[N],b[N];void insert(int l ,int r,int c)
{b[l]+=c;b[r+1]-=c;
}int main()
{int n,m;cin>>n>>m;for(int i=1;i<=n;i++){cin>>a[i];insert(i,i,a[i]);}while(m--){int l,r,c;cin>>l>>r>>c;insert(l,r,c);}for(int i=1;i<=n;i++){a[i]=a[i-1]+b[i];  //注意这里的公式cout<<a[i]<<' ';}return 0;
}

矩阵差分

原来的数组加上差分数组
原来的数组不能丢

#include <iostream>using namespace std;const int N = 1010;int n, m, q;
int a[N][N], b[N][N];int main()
{scanf("%d%d%d", &n, &m, &q);for (int i = 1; i <= n; i ++ )for (int j = 1; j <= m; j ++ ){scanf("%d", &a[i][j]);}while (q -- ){int x1, y1, x2, y2, c;cin >> x1 >> y1 >> x2 >> y2 >> c;b[x1][y1] += c;b[x2 + 1][y1] -= c;b[x1][y2 + 1] -= c;b[x2 + 1][y2 + 1] += c;}for (int i = 1; i <= n; i ++ ){for (int j = 1; j <= m; j ++ ){b[i][j] += b[i - 1][j] + b[i][j - 1] - b[i - 1][j - 1];printf("%d ", a[i][j]+b[i][j]);}puts(" ");}return 0;
}

6.图论

6.1dfs

n皇后问题

 #include<bits/stdc++.h>using namespace std;int n;const int N=20;char q[N][N];  //存储棋盘bool cor[N],dg[2*N],udg[2*N];  //cor表示每一列,dg和udg表示正对角线和反对角线,来存储他们的是否被使用过的状态 void dfs(int u)  //放第 u 行的棋子 (深度优先遍历){if(u==n) //如果放盘,则输出棋盘{for(int i=0;i<n;i++){for(int j=0;j<n;j++)cout<<q[i][j];cout<<endl;}cout<<endl;return ;  //重点!! 递归到最深层,返回,千万别忘记}for(int i=0;i<n;i++)  //从第一列,开始遍历,是否放棋{if(!col[i]&&!dg[i+u]&&!udg[n-i+u])  //如果 列,对角线,没有被放过,则放皇后{q[u][i]='Q';  //放上col[i]=dg[i+u]=udg[n-i+u]=true;  //改变状态,dg[i+u]表示截距,每个对角线,都有自己独有的截距;反对角线的截距是负数,数组的下标,不能存放负数,所以加上 n这个偏移量dfs(u+1);  //放下一行的col[i]=dg[i+u]=udg[n-i+u]=false;  //恢复现场q[u][i]='.';}}}int main(){cin>>n;for(int i=0;i<n;i++)for(int j=0;j<n;j++)q[i][j]='.';  //初始化棋盘dfs(0);  //从第0行,开始放棋子return 0;}

6.2走迷宫

#include<bits/stdc++.h>
using namespace std;typedef pair<int ,int> PII;  //定义 坐标const int N=110;int n,m;
int g[N][N];  //表示地图
int d[N][N];  //存的是某一点到源点的距离int bfs()
{queue<PII> q;  //定义队列,里面存的表示我们将要走的哪一个点q.push({0,0});  //先把放进去,表示我们要走  起点memset(d,-1,sizeof d);  //初始化,把每个点到源点的距离初始化为  -1d[0][0]=0;  //源点到自己的距离为0int dx[4]={0,0,-1,1},dy[4]={1,-1,0,0};  //我们定义的四个方向 x,y 的移动,这样可以避免 4个判断语句,注意 dx,dy 要一一对应//从第一个开始位置开始遍历while(!q.empty())  //走到最后{auto t=q.front();  //把队列中的第一个元素取出来q.pop();  //对头元素出列for(int i=0;i<4;i++){int x=t.first+dx[i],y=t.second+dy[i]; //扩展之后的坐标//x,y不能越界,可以走,没走过if(x>=0&&x<n&&y>=0&&y<m&&g[t.first][t.second]==0&&d[x][y]==-1){d[x][y]=d[t.first][t.second]+1;  //距离+1q.push({x,y}); //把把满足条件地坐标插进去,下一次走它们}}}return d[n-1][m-1];  //返回最后一个即终点到源点地距离
}int main()
{cin>>n>>m;for(int i=0;i<n;i++)for(int j=0;j<m;j++)cin>>g[i][j];   //读入地图cout<<bfs()<<endl;return 0;
}

7.最短路

7.1dijkstra

#include<bits/stdc++.h>
using namespace std;typedef pair<int,int> PII;const int N=1.5*1e5+10;int n,m;
int h[N],w[N],ne[N],e[N],idx;
int dist[N];
bool st[N];void add(int a,int b,int c)
{e[idx]=b,w[idx]=c,ne[idx]=h[a],h[a]=idx++;
}int dijkstra()
{memset(dist,0x3f,sizeof dist);dist[1]=0;priority_queue<PII,vector<PII>,greater<PII>> heap;heap.push({0,1});while(heap.size()){auto t=heap.top();heap.pop();int ver=t.second,distance=t.first;if(st[ver]) continue;st[ver]=1;for(int i=h[ver];i!=-1;i=ne[i]){int j=e[i];if(dist[j]>distance+w[i]){dist[j]=distance+w[i];heap.push({dist[j],j});}}}if(dist[n]==0x3f3f3f3f)  return -1;return dist[n];
}int main()
{scanf("%d%d",&n,&m);memset(h,-1,sizeof h);while(m--){int a,b,c;scanf("%d%d%d",&a,&b,&c);add(a,b,c);}int t=dijkstra();cout<<t;return 0;
}

7.2foly

#include<bits/stdc++.h>
using namespace std;const int N=210;
const int INF=1e9;int n,m,k;
int g[N][N];void floyd()
{for(int k=1;k<=n;k++)for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)g[i][j]=min(g[i][j],g[i][k]+g[k][j]);
}int main()
{scanf("%d%d%d",&n,&m,&k);for(int i=1;i<=n;i++)for(int j=1;j<=n;j++)if(i==j) g[i][j]=0;else g[i][j]=INF;int a,b,c;    while(m--){scanf("%d%d%d",&a,&b,&c);g[a][b]=min(c,g[a][b]);}floyd();while(k--){int x,y;scanf("%d%d",&x,&y);if(g[x][y]>=INF/2)  puts("impossible");else cout<<g[x][y]<<endl;}return 0;
}

8.并查集

#include<bits/stdc++.h>
using namespace std;const int N=1e5+10;int n,m;
int p[N];int find(int x)
{if(p[x]!=x) p[x]=find(p[x]);return p[x];
}int main()
{cin>>n>>m;for(int i=1;i<=n;i++)p[i]=i;int a,b;char op[2];while(m--){cin>>op>>a>>b;if(op[0]=='M'){p[find(a)]=p[find(b)];}else{if(find(a)==find(b))puts("Yes");elseputs("No");}}return 0;
}

9.数论

9.1gcd lcm

//最大公约数
int gcd(int x,int y)
{return y?gcd(y,x%y):x;
}//最小公倍数
int lcm(int x,int y)
{return x*y/gcd(x,y);
}

9.2判断素数(质数)

bool isprime(int n)
{if(n<=3)   //特判几个较小的数return n>1;if(n%6!=1&&n%6!=5)  //不在6的倍数的两侧,一定不是素数return 0;for(int i=5;i<=sqrt(n);i+=6)  //判断在6的倍数的两侧的数,是不是素数if(n%i==0||n%(i+2)==0)return 0;return 1;
}

9.3分解质因子

题目

链接: AcWing 867. 分解质因数- AcWing

给定 n 个正整数 ai,将每个数分解质因数,并按照质因数从小到大的顺序输出每个质因数的底数和指数。

输入格式

第一行包含整数 n。

接下来 n 行,每行包含一个正整数 ai。

输出格式

对于每个正整数 ai,按照从小到大的顺序输出其分解质因数后,每个质因数的底数和指数,每个底数和指数占一行。

每个正整数的质因数全部输出完毕后,输出一个空行。

数据范围

1≤n≤100,
2≤ai≤2× 1 0 9 10^9 109

输入样例:

2
6
8

输出样例:

2 1
3 12 3

分析

  • x 的质因子最多只包含一个大于 根号x 的质数。如果有两个,这两个因子的乘积就会大于 x,矛盾。
  • i 从 2 遍历到 根号x。 用 x / i,如果余数为 0,则 i 是一个质因子。
  • s 表示质因子 i 的指数,x /= i 为 0,则 s++, x = x / i 。
  • 最后检查是否有大于 根号x 的质因子,如果有,输出。

代码实现

#include<bits/stdc++.h>
using namespace std;void divide(int x)
{for (int i = 2; i <= x / i; i ++ )//i <= x / i:防止越界,速度大于 i < sqrt(x)if (x % i == 0)//i为底数{int s = 0;//s为指数while (x % i == 0) x /= i, s ++ ;cout << i << ' ' << s << endl;//输出}if (x > 1) cout << x << ' ' << 1 << endl;//如果x还有剩余,单独处理cout << endl;
}int main()
{int n;cin >> n;while (n -- ){int x;cin >> x;divide(x);}return 0;
}

9.4快速幂

给你三个整数 a,b,p,求 a b m o d p a^ b mod p abmodp
题目链接:P1226 【模板】快速幂 | 取余运算

取平方思路

参考文章:https://oi-wiki.org/math/binary-exponentiation/

先看这个式子 a 2 b = a 2 ∗ a b a^{2b}=a^2*a^b a2b=a2ab ,我们发现取平方可以缩短计算次数,我们可以按照 二进制 来表示幂。那我们来看看幂和二进制之间的关系。

举个例子讲解:例如: 3 13 = 3 ( 1101 ) 2 = 3 8 ∗ 3 4 ∗ 3 1 3^{13}=3^{(1101)_2}=3^8*3^4*3^1 313=3(1101)2=383431

是不是发现,这里面只有二进制位是1的才乘到里面,是0的跳过,所以我们只需要用10进制转2进制的方法(不断÷2的余数,直到商为0),即可得到幂数对应的二进制数。**如果某一个二进制位是1,那就将对应的数乘到结果里面,并且底数也翻倍;如果是0,则底数也翻倍。**可看下面的推导过程,这个地方有点绕,跟着过一遍就懂了。

取模定理

(a * b) % p = (a % p * b % p) % p (3

乘积的取模等于各个因子取模相乘然后再取模;

取模的运算不会干涉乘法运算,因此我们只需要在计算的过程中取模即可 。

快速幂代码实现

long long binpow(long long a, long long b) 
{long long res = 1;while (b > 0) {if (b & 1) res = res * a;a = a * a;b >>= 1;}return res;
}

快速幂取模代码实现

long long binpow(long long a, long long b, long long m) 
{a %= m;long long res = 1;while (b > 0) {if (b & 1) res = res * a % m;a = a * a % m;b >>= 1;}return res;
}

10.位运算

​ 位运算就是直接对整数在内存中的二进制位进行操作,由于计算机内部就是以二进制来存储数据,位运算是相当快的。

​ 基本的位运算共 6种,分别为按位与、按位或、按位异或、按位取反、左移和右移

​ 位运算一般有三种作用:

  1. 高效地进行某些运算,代替其它低效的方式。
  2. 表示集合。(常用于状压DP )
  3. 题目本来就要求进行位运算。

位运算符

含义符号简述
按位与a & b同一得 1
按位或a | b有一得 1
按位异或a ^ b相同得 0
按位取反~a取反
左移a << b向左移动,低位补零,高位舍弃
带符号右移a >> b向右移动,高位补原有高位,低位舍弃
  1. 复合赋值位运算符

    += , -= 等运算符类似,位运算也有复合赋值运算符: &= , |= , ^= , <<= , >>= 。(取反是单目运算,所以没有)

  2. 数组初始化

    memset(f,0x3f,sizeof(f))

  3. 位移运算符

    左移运算符 <<
    二进制 : 1 -> 10 -> 100 -> 1000
    十进制 : 1 -> 2  -> 4   -> 8
    综上所述:1 << n  ==  2^n
    右移运算符 >>
    二进制 : 1000 -> 100 -> 10 -> 1
    十进制 :  8    -> 4   -> 2  -> 1
    综上所述: n >> x  == n / (2^x)
    
  4. 运算符优先级

    ~的优先级最高,其次是<<>>,再次是,然后是^,优先级最低的是|

​ 位运算的优先级 低于 算术运算符(除了取反),而按位与、按位或及异或 低于 比较运算符(详见 运算页面 ),所以使用时需多加注意,在必要时添加括号。

位运算应用

10.1整数的奇偶性判断

  • 朴素做法

    if(a%2==1)//为奇数
    else//为偶数
    
  • 按位与 -> 二进制的末位为0表示偶数,最末位为1表示奇数

    if(a & 1 != 1)//为奇数
    else//为偶数
    

10.2有关 2 的幂的应用

将一个数乘(除) 2 的非负整数次幂

// 计算 n*(2^m)
int mulPowerOfTwo(int n, int m)   
{return n << m;
}// 计算 n/(2^m)
int divPowerOfTwo(int n, int m)   
{return n >> m;
}

判断一个数是否是2的幂次方,若是,并判断出来是多少次方

题目链接: 力扣 231. 2的幂

​ 将2的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1,并且1后面跟了n个0; 因此问题可以转化为判断1后面是否跟了n个0就可以了

如果将这个数减去1后会发现,仅有的那个1会变为0,而原来的那n个0会变为1;因此将原来的数与去减去1后的数字进行与运算后会发现为零。

   最快速的方法:(number & number - 1) == 0原因:因为2的N次方换算是二进制为10……0这样的形式(0除外)。按位与上自己-1的位数,这们得到结果为0。例如,8的二进制为1000;8-1=7,7的二进制为111。两者相与的结果为0。计算如下:1000& 0111-------0000

代码实现如下:

#include<bits/stdc++.h>
using namespace std;//判断一个数是2的多少次方
int log2(int value)   
{int x=0;while(value>1){value>>=1;x++;}return x;
}int main()
{int num;scanf("%d",&num);//使用与运算判断一个数是否是2的幂次方if(num&(num-1))     printf("%d不是2的幂次方!\n",num);elseprintf("%d是2的%d次方!\n",num,log2(num));return 0;
}

10.3 lowbit(x)返回x的最后一位1

​ lowbit(x):返回x的最后一位1,即一个二进制最低位的1与后边的0组成的数。

​ x = 1010 lowbit(x) = 10

​ x= 101000 lowbit(x) = 1000

​ 实现原理:x & -x = x & (~x + 1),负数的补码:原码取反加一(利用了负整数的补码特性)

10.4二进制数中1的个数

题目链接:力扣 191.位1的个数

  • 朴素做法 -> 使用移位操作,判末位是否为1;移位的次数为32

    int BitCount(unsigned int n)
    {unsigned int c =0 ; // 计数器while (n >0){if((n &1) ==1) // 当前位是1++c ; // 计数器加1n >>=1 ; // 移位}return c ;
    }
    
  • 快速做法 -> 迭代n=n&(n-1),消除最右边的1,计数

    int BitCount2(unsigned int n)
    {unsigned int c =0 ;for (c =0; n; ++c){n &= (n -1) ; // 清除最低位的1}return c ;
    }
    

10.5求二进制位的某一位是几

n 的二进制中第 k 位数字

  • 先把第k为移到最后一位 n>>k

  • 看个位是几 x&1

把上面两步综合 即 n>>k&1

应用:输出n=10的二进制

#include<bits/stdc++.h>
using namespace std;int main()
{int n=10;for(int k=3;k>=0;k--) //从0位开始的(右到左)cout<<(n>>k&1);return 0;
}

10.6交换两个整型变量的值

异或的性质:

1.交换律:可任意交换运算因子的位置,结果不变;

如:a ^ b ^ c = b ^ a ^ c;

2.结合律:即(a ^ b) ^ c == a ^ ( b ^ c) ;

3.对于任何数x, 都有x ^ x = 0, x ^ 0 = x,同自己求异或为0,同0求异或为自己

4.自反性:A ^ B ^ B = A ^ 0 = A, 连续和同一个因子做异或运算,最终结果为自己

例题:int A = 10, int B = 20, 在不引入第3个变量的情况下,交换两个变量的值。

异或法——代码实现

#include<bits/stdc++.h>
using namespace std;int main()
{int A = 10;int B = 20;printf("交换前A = %d B = %d\n", A, B);A = A ^ B;B = A ^ B;A = A ^ B;printf("交换后A = %d B = %d\n", A, B);return 0;	
}

10.7数组中x出现的次数

应用一:数组中,只有一个数出现一次,剩下都出现两次,找出出现一次的数
题目链接:力扣 136.只出现一次的数字 |

因为只有一个数恰好出现一个,剩下的都出现过两次,所以只要将所有的数异或起来,就可以得到唯一的那个数,因为相同的数出现的两次,异或两次等价于没有任何操作。

代码实现

int singleNumber(int nums[]) 
{int result = 0, n = sizeof(nums)/sizeof(nums[0]);for (int i = 0; i < n; i++){result ^= nums[i];}return result;
}

应用二:数组中,只有一个数出现一次,剩下都出现三次,找出出现一次的数

题目链接:力扣 137.只出现一次的数字||

为了方便叙述,我们称「只出现了一次的元素」为「答案」。

由于数组中的元素都在 int(即 32 位整数)范围内,因此我们可以依次计算答案的每一个二进制位是 0还是1。具体地,考虑答案的第 i 个二进制位(i 从0开始编号),他可能为0或者1。对于数组中非答案的元素,每个元素都出现了3次,3次对应第i个二进制位和的3个0或者3个1,无论哪一种情况,他的结果相加(0或者3)都是3的倍数,答案的第 i 个二进制位就是数组中所有元素的第 i 个二进制位之和除以 3 的余数。

这样一来,对于数组中的每一个元素 x,我们使用位运算 (x>>i)&1 得到 x 的第 i 个二进制位,并将它们相加再对 3 取余,得到的结果一定为 0 或 1,即为答案的第 i 个二进制位

代码实现

int singleNumber(vector<int>& nums) 
{int ans = 0;for (int i = 0; i < 32; ++i) {int total = 0;for (int num: nums) {total += ((num >> i) & 1);}if (total % 3) {ans |= (1 << i);}}return ans;
}

针对上面进行拓展,如果是数组中,只有一个数出现一次,剩下都出现 k 次 ,找出出现一次的数呢

total % k  //将3改为 k ,对 k 进行取模即可 

应用三:如何找数组中唯一成对的那个数

1-10这10个数放在含有11个元素的数组中,只有唯一一个元素重复,其他均只出现一次,要求每个数组元素只能够被访问一次,请设计一个算法,将它找出来 。

位运算中 异或 ^ 的特点,A^A=0 A^0=A ,也就是说,两个相同的数字进行异或结果为0,可以用来消除重复。 可惜,题目要求寻找重复的值,所以,我们对这1001个数字 加上(1 ~ 1000)这1000个数字,这样1~1000所有的数字出现了2次,可以消除,而那个重复的数字由于加了一次,变成了3次,A ^ A ^ A =A。从而得出那个重复的A。

代码实现

int findDouble(int T[])
{int res=0; //定义一个返回结果,初始值为0,因为A^0=A//先对T数组进行异或for(int i=0;i<T.length;i++){res^=T[i];}//在与1~1000异或for(int i=1;i<=1000;i++){res^=i;}return res;
}

11.背包问题

12.动态规划

13.STL

14. 字符串

15.拿分

Alt

相关文章:

常用算法汇总

作者&#xff1a;指针不指南吗 专栏&#xff1a;算法篇 &#x1f43e;算法思维逻辑&#x1f43e; 文章目录 1.判断闰年2.计算从某天到某天的天数3.二分4. 前缀和5.差分6.图论6.1dfs6.2走迷宫 7.最短路7.1dijkstra7.2foly 8.并查集9.数论9.1gcd lcm9.2判断素数(质数)9.3分解质因…...

W801学习笔记二十二:英语背单词学习应用——下

续上篇&#xff1a; W801学习笔记二十一&#xff1a;英语背单词学习应用——上 五、处理用户交互 由于英语也是采用了和唐诗一样的《三分钟限时挑战》《五十题竞速挑战》《零错误闯关挑战》&#xff0c;所以用户交互的逻辑和唐诗是一样的。所以&#xff0c;我们抽一个基类&a…...

Vue路由的模式和原理

一、hash模式&#xff08;默认&#xff09; 使用URL的hash来模拟一个完整的URL&#xff0c;当URL发生改变时不会向服务器发起请求。# 和其后面的字符称为hash&#xff0c;可通过 window.location.hash 获取。当hash改变会触发&#xff08;包括浏览器的前进、后退&#xff09;会…...

在K8S中,静态、动态、自主式Pod有何区别

在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;静态Pod、自主式Pod和动态Pod是不同管理方式下的Pod类型&#xff0c;它们的区别主要体现在创建和管理方式上&#xff1a; 静态Pod&#xff1a; 静态Pod是由kubelet直接管理的&#xff0c;其配置文件存储在节点本地而…...

【Three.js基础学习】15.scroll-based-animation

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 前言 课程要点 结合html等场景 做滚动动画 1.遇到的问题&#xff0c; 在向下滚动时&#xff0c;下方会显白&#xff08;部分浏览器&#xff09; 解决&#xff1a;alpha:true …...

ubantu安装mysql

安装 准备&#xff1a;下载&#xff1a;版本5.1.17的MySQL并上传至Ubuntu系统 #解压 tar -xvf mysql-server_5.7.17-1ubuntu16.10_amd64.deb-bundle.tar #提前安装插件 sudo apt-get install libaio1 libmecab2 #若安装失败使用以下命令 apt --fix-broken install sudo apt-g…...

注意!华为HCIP-Datacom认证考试题有变化!

01 注意 HCIP Datacom H12-831考试变题了&#xff0c;最近要考试的多观望一下&#xff0c;821目前稳定。 华为HCIP考试以后要加难度&#xff0c;增加实验题&#xff0c;还没考完的小伙伴抓紧时间了。 02 华为HCIP认证大更新 未来将增加实验考试&#xff0c;拒绝背题库的Pass&a…...

你是我的荣耀 | 林先生:从酷爱数学到毕业走向数据分析岗位

人物背景&#xff1a; 研究生国家奖学金、本科生国家奖学金、学业奖学金一等奖、上海市优秀毕业生&#xff1b; 应用统计专业 CPDA优秀学员 ## 为什么选择数据分析相关专业 我是应用统计专业的一个应届毕业生&#xff0c;目前在一家上海市属的国企&#xff0c;从事数据分析相关…...

操作系统真象还原-bochs安装

今天读了《操作系统真象还原》这本书&#xff0c;写上比较幽默通俗。书中例子需要安装一个bochs系统&#xff0c;记录一下安装过程。参考了书中1.4&#xff0c;1.5两节&#xff0c;书中尽让有两处问题&#xff0c;也记录了下来。 1.3 操作系统的宿主环境 下载地址&#xff1a…...

windows平台安装labelme

之前写过一篇文章也是关于在windows平台安装labelme的&#xff1a;《windows平台python版labelme安装与使用_labelme下载-CSDN博客》&#xff0c;随着软件与工具的更新换代&#xff0c;按照同样的方法最近在使用的时候出现了错误&#xff0c;出现创建虚拟环境失败&#xff0c;具…...

微服务之SpringCloud AlibabaSeata处理分布式事务

一、概述 1.1背景 一次业务操作需要跨多个数据源或需要跨多个系统进行远程调用&#xff0c;就会产生分布式事务问题 but 关系型数据库提供的能力是基于单机事务的&#xff0c;一旦遇到分布式事务场景&#xff0c;就需要通过更多其他技术手段来解决问题。 全局事务&#xff1a;…...

2005-2021年全国各地级市生态环境注意力/环保注意力数据(根据政府报告文本词频统计)

2005-2021年全国各地级市生态环境注意力/环保注意力数据&#xff08;根据政府报告文本词频统计&#xff09; 2005-2021年全国各地级市生态环境注意力/环保注意力数据&#xff08;根据政府报告文本词频统计&#xff09; 1、时间&#xff1a;2005-2021年 2、范围&#xff1a;2…...

熟悉这些道理可以让人更好地应对各种挑战和困难。

1. 为别人尽最大的力量&#xff0c;最后就是为自己尽最大的力量。——罗斯金 2. 世上有一条永恒不变的法则:当你不在乎&#xff0c;你就得到。当你变好&#xff0c;你才会遇到更好的。只有当你变强大&#xff0c;你才不害怕孤单。当你不害怕孤单&#xff0c;你才能够宁缺毋滥。…...

AI去衣技术在动画制作中的应用

随着科技的发展&#xff0c;人工智能&#xff08;AI&#xff09;已经在各个领域中发挥了重要作用&#xff0c;其中包括动画制作。在动画制作中&#xff0c;AI去衣技术是一个重要的工具&#xff0c;它可以帮助动画师们更加高效地完成工作。 AI去衣技术是一种基于人工智能的图像…...

卷积神经网络要点和难点实际案例和代码解析

卷积神经网络(Convolutional Neural Networks,CNN)是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一。卷积神经网络仿造生物的视知觉机制构建,可以进行监督学习和非监督学习,其隐含层内的卷积核参数共享和层间连接的稀疏性使得卷积神经网络能够…...

initramfs及rpm/dracut操作

一、背景 更新bundle包后发现系统异常。 定位发现驱动升级不成功&#xff0c;内核启动后加载的还是更新前的旧驱动。但等内核启动完成后&#xff0c;卸载旧驱动手动insmod新驱动&#xff0c;是可以加载成功的。 驱动的安装目录在/lib/modules/$KERNELVERSION/extra目录下。 …...

Kafka 2.13-3.7.0 在 Windows 上的安装与配置指南

在本文中&#xff0c;我将引导您完成在Windows操作系统上安装Apache Kafka 2.13-3.7.0的全过程&#xff0c;包括下载Scala运行环境、Kafka软件包、配置相关设置&#xff0c;并最终启动Kafka服务。此外&#xff0c;还会简要介绍如何使用客户端工具进行查看和管理。 Kafka的命名…...

C++ 顺序线性表的功能

顺序线性表的功能 //头文件 #pragma once#define LIST_INIT_SIZE 50 #define LIST_INCREMENT 20 #define OK 1 #define ERROR 0typedef int Status;typedef char ElemType;typedef struct list_ {ElemType* elem;int length;int listize; }SqList;// 1 初始化 函数 Status…...

C++面经 每日一问(二)

将引用作为函数参数有什么影响&#xff1f; 传递引用给函数与传递指针的效果相同。这意味着被调函数中的形参变量将成为主调函数中实参的别名&#xff0c;从而直接对目标对象进行操作。相比于传递指针&#xff0c;这种方式消除了对指针的繁琐操作&#xff0c;提高了代码的清晰性…...

最新版Ceph( Reef版本)块存储简单对接k8s

当前ceph 你的ceph集群上执行 1.创建名为k8s-rbd 的存储池 ceph osd pool create k8s-rbd 64 642.初始化 rbd pool init k8s-rbd3 创建k8s访问块设备的认证用户 ceph auth get-or-create client.kubernetes mon profile rbd osd profile rbd poolk8s-rbd部署 ceph-rbd-csi c…...

Vue生命周期都有哪些?

定义 Vue的生命周期就是实例从创建到销毁的一个过程&#xff0c;即从创建、初始化数据、编译模板、挂载Dom($el)->渲染、更新->渲染&#xff0c;卸载等一系列的过程。el是挂载点如<div id"app"></div>。 Vue的生命周期分为八个阶段 1.beforeCreate…...

景源畅信:个人抖音小店怎么开通?

在数字时代的浪潮中&#xff0c;个体创业已不再是遥不可及的梦想。特别是随着短视频平台的崛起&#xff0c;抖音不仅成为人们娱乐消遣的新宠&#xff0c;更是众多创业者眼中的“新大陆”。你是否也曾憧憬过在抖音上开一家属于自己的小店?那么&#xff0c;如何开通个人抖音小店…...

python学习笔记B-16:序列结构之字典--字典的遍历与访问

下面是字典的访问和遍历方法&#xff1a; d {10:"hello",20:"python",30:"world"} print(d[10],"--",d[20],"--",d[30]) print(d.get(10)) print("以上两种访问方式的区别是&#xff0c;d[key]若键是空值&#xff0c…...

《QT实用小工具·四十八》趣味开关

1、概述 源码放在文章末尾 该项目实现了各种样式的趣味开关&#xff1a; 1、爱心形状的switch开关&#xff0c;支持手势拖动、按压效果 2、线条样式的3种开关 项目demo演示如下所示&#xff1a; 使用方式&#xff1a; 1、sapid_switch文件夹加入工程&#xff0c;.pro文件中…...

QML进阶(十四) Model-View-Delegate视图框架

文章目录 数据模型(Model)C++数据模型XmlListModelRepeater模型视图框架(View)ListViewTableViewGridViewPathViewMVC(Model-View-Controller)模式将视图系统拆分为模型、视图、控制器三部分,每个部分都相对独立职责单一。模型(model)负责管理视图的数据并对外提供服务。视图(…...

word:三线表的绘制【攻略】

word&#xff1a;三线表的绘制【攻略】 前言版权推荐word&#xff1a;三线表的绘制效果简单方法另外的方法 最后 前言 2024-5-7 18:25:08 以下内容源自《【攻略】》 仅供学习交流使用 版权 禁止其他平台发布时删除以下此话 本文首次发布于CSDN平台 作者是CSDN日星月云 博客…...

嵌入式物联网系统软硬件基础知识大全(2)

接口技术 1. Flash存储器 (1)Flash存储器是一种非易失性存储器,根据结构的不同可以将其分为NOR Flash和NAND Flash两种。 (2)Flash存储器的特点: A、区块结构:在物理上分成若干个区块,区块之间相互独立。 B、先擦后写:Flash的写操作只能将数据位从1写成0,不能从…...

Origin拟合EIS(电化学阻抗谱),怎么出来圆圈

1.先导入数据&#xff0c;以点图的形式画出来 2.重要的一步Fitting&#xff0c;按照我这个一步一步来就行 3.将其中的Function选择为Elipse&#xff0c;然后点拟合至最佳条件 4.第三步做完就会发现圆圈已经出来了&#xff0c;然后点OK就行 5.搞定...

Android APP转成launcher

一、背景 使用场景&#xff0c;需要开机的时候&#xff0c;自动启动app&#xff0c;解决方案为将Android app转成 launcher app&#xff0c;可实现效果。 二、实现 在app入口activity 的配置文件&#xff08;AndroidManifest.xml&#xff09;对应位置&#xff0c;添加 <cat…...

【副本向】Lua副本逻辑

副本生命周期 OnCopySceneTick() 子线程每次心跳调用 --副本心跳 function x3323_OnCopySceneTick(elapse)if x3323_g_IsPlayerEnter 0 thenreturn; -- 如果没人进入&#xff0c;则函数直接返回endif x3323_g_GameOver 1 thenif x3323_g_EndTick > 0 thenx3323_CountDown…...

ROS机器人实用技术与常见问题解决

问题速查手册&#xff08;时实更新&#xff09;更加全面丰富的问题手册记录 1.机器人使用GPARTED挂载未分配空间 需要在图型界面下操作&#xff0c;建议使用no machine连接 安装gparted磁盘分区工具, sudo apt-get install gparted -y 启动软件 sudo gparted 点击磁盘/内存…...

Linux学习之IP协议

前言&#xff1a; 在学习IP协议i前&#xff0c;我们其实知道网络协议栈是一层层的&#xff0c;上层封装好之后就传给下层&#xff0c;对于我们正要学习到的TCP协议&#xff0c;在对数据进行封装之后&#xff0c;并不是直接就将数据进行传输&#xff0c;而是交给下一层网络层进…...

Python Dash库:一个Web应用只需几行代码

大家好&#xff0c;在数据科学领域&#xff0c;数据可视化是将数据以图形化形式展示出来&#xff0c;帮助我们更直观地理解数据。Python中有一个非常流行的数据可视化库叫做Dash&#xff0c;Dash以其简洁、高效和强大的功能而闻名&#xff0c;它允许开发者快速构建交互式Web应用…...

用Docker 创建并运行一个MySQL容器

可以在DockerHub官网上荡:mysql - Official Image | Docker Hub 指令是:docker pull mysql; 因为文件比较大可能时间比较长&#xff0c;我是跟着黑马的课走的 课程提供的有文件&#xff0c;我就用已有的资源了。 在tmp目录里放入mysql.tar包 然后cd进去 输入指令:docker lo…...

在Java中如何有效地处理内存泄露

在Java中&#xff0c;处理内存泄露有多种方法&#xff0c;以下是其中三种常见的方法及其原理和适用场景&#xff1a; ## 1. 合理使用垃圾回收机制 Java中的垃圾回收机制&#xff08;Garbage Collection&#xff0c;GC&#xff09;是一种自动化的内存管理技术&#xff0c;它可以…...

值得收藏!修复Windows 10/11中找不到输出或输入设备的五种方法

序言 这篇文章主要关注处理声音输出/输入设备未发现的问题。它提供了许多可行的方法,帮助了许多Windows用户。阅读以下内容以找到你的解决方案。 最近,我将Windows 10更新到21H2,发现我的音频无法工作。当我把鼠标放在任务栏上的声音图标(上面有一个十字图标)上时,它会…...

Slurm运行pytorch深度学习模型(小白版)

Slurm背景&#xff1a; Slurm 是一种开源的作业调度系统&#xff0c;它用于管理大型计算集群中的计算资源和作业。你可以把它想象成一个“交通管制员”&#xff0c;负责管理计算集群中的各种任务&#xff0c;确保它们按照用户设定的规则有序地执行。 Slurm 的主要功能包括&…...

SQL如何利用Bitmap思想优化array_contains()函数

目录 0 问题描述 1 位图思想 2 案例实战 3 小结 0 问题描述 在工作中&#xff0c;我们往往使用array_contains()函数来进行存在性问题分析&#xff0c;如判断某个数是否在某个数组中&#xff0c;但是当表数据量过多&#xff0c;存在大量array_contains()函数时&#xff0c;…...

面试官:打开了一个新窗口,怎么知道这个窗口已经被打开过?

前言 我们现在来想这么一个场景&#xff0c;在掘金的文章管理页打开了一篇文章草稿&#xff0c;然后点击编辑&#xff0c;这个时候打开新标签页 A &#xff0c;再点击一次编辑&#xff0c;打开了标签页 B 。 此时如果你在 A 编辑&#xff0c; B 是感知不到 A 的内容变动的&am…...

机器学习项目实践-基础知识部分

环境建立 我们做项目第一步就是单独创建一个python环境&#xff0c;Python新的隔离环境 创建&#xff1a;python -m venv ml 使用&#xff1a;.\Scripts\activate python -m venv ml 是在创建一个名为 ml 的虚拟环境&#xff0c;这样系统会自动创建一个文件夹ml&#xff0c;…...

CNN卷积神经网络,TensorFlow面试题

目录 CNN卷积神经网络 什么是TensorFlow? 张量是什么 TensorFlow有什么优势?...

Android 官网Ota介绍

构建 OTA 软件包 | Android 开源项目 | Android Open Source Project...

Redis(持久化)

文章目录 1.RDB1.介绍2.RDB执行流程3.持久化配置1.Redis持久化的文件是dbfilename指定的文件2.配置基本介绍1.进入redis配置文件2.搜索dbfilename&#xff0c;此时的dump.rdb就是redis持久化的文件3.搜索dir&#xff0c;每次持久化文件&#xff0c;都会在启动redis的当前目录下…...

基于Flask的岗位就业可视化系统(一)

&#x1f31f;欢迎来到 我的博客 —— 探索技术的无限可能&#xff01; &#x1f31f;博客的简介&#xff08;文章目录&#xff09; 前言 本项目综合了基本数据分析的流程&#xff0c;包括数据采集&#xff08;爬虫&#xff09;、数据清洗、数据存储、数据前后端可视化等 推荐…...

嵌入式学习68-C++(运算符重载和虚函数)

知识零碎&#xff1a; cin >> n 相当于scanf C系统提供的6种基本函数 …...

UVA1048/LA3561 Low Cost Air Travel

UVA1048/LA3561 Low Cost Air Travel 题目链接题意输入格式输出格式 分析AC 代码 题目链接 本题是2006年ICPC世界总决赛的A题 题意 很多航空公司都会出售一种联票&#xff0c;要求从头坐&#xff0c;上飞机时上缴机票&#xff0c;可以在中途任何一站下飞机。比如&#xff0c;假…...

学习和分析各种数据结构所要掌握的一个重要知识——CPU的缓存利用率(命中率)

什么是CPU缓存利用率&#xff08;命中率&#xff09;&#xff0c;我们首先要把内存搞清楚。 硬盘是什么&#xff0c;内存是什么&#xff0c;高速缓存是什么&#xff0c;寄存器又是什么&#xff1f; 我们要储存数据就要运用到上面的东西。首先里面的硬盘是可以无电存储的&#…...

IOS自动化—将WDA打包ipa批量安装驱动

前言 CSDN&#xff1a; ios自动化-Xcode、WebDriverAgent环境部署 ios获取原生系统应用的包 如果Mac电脑没有配置好Xcode相关环境,可以参考以上文章。 必要条件 Mac电脑&#xff0c;OS版本在12.4及以上&#xff08;低于这个版本无法安装Xcode14&#xff0c;装不了Xcode14就…...

SAP PP学习笔记12 - 评估MRP的运行结果

上一章讲了MRP的概念&#xff0c;参数&#xff0c;配置等内容。 SAP PP学习笔记11 - PP中的MRP相关概念&#xff0c;参数&#xff0c;配置-CSDN博客 本章来讲 MRP跑完之后呢&#xff0c;要怎么评估这个MRP的运行结果。 1&#xff0c;Stock/Requirements List and MRP List 在…...

AndroidStudio的Iguana版的使用

1.AndroidStudio介绍 Android Studio 是用于开发 Android 应用的官方集成开发环境 (IDE)。Android Studio 基于 IntelliJ IDEA 强大的代码编辑器和开发者工具&#xff0c;还提供更多可提高 Android 应用构建效率的功能&#xff0c;例如&#xff1a; 基于 Gradle 的灵活构建系统…...

普通人也能创业!轻资产短视频带货项目,引领普通人实现创业梦想

在这个信息爆炸的时代&#xff0c;创业似乎成为了越来越多人的梦想。然而&#xff0c;传统的创业模式 keJ0277 往往伴随着高昂的资金投入和复杂的管理流程&#xff0c;让许多普通人望而却步。然而&#xff0c;现在有一种轻资产短视频带货项目正在悄然兴起&#xff0c;它以其低…...

【亚马逊云】注册APN账号及报考AWS认证考试说明演示

文章目录 1. 登录AWS网站2. 注册APN账号3. 更改APN账号密码&#xff08;选&#xff09;4. 修改APN账号信息&#xff08;选&#xff09;5. 查看AWS认证情况&#xff08;选&#xff09;6. AWS认证考试报名流程7. 修改报名控制台语言版本&#xff08;选&#xff09;8. 开始报名AWS…...

Mac SourceTree配置ssh git仓库

一、准备条件 1、Mac系统电脑 2、安装好SourceTree 3、获取ssh git仓库地址 二、配置步骤 1、打开终端命令行 ssh -t rsa -C "xxx""xxx"代表注册git仓库时&#xff0c;使用的用户名&#xff0c;可以是字符串也可以是邮箱地址。 如果遇到输入密码&#xf…...

如何设计学术会议海报?

在参加学术会议的时候&#xff0c;制作一份会议海报来展示你的研究内容是十分必要的。海报是你与别人交流研究成果时的关键部分&#xff0c;也是成功科研生涯的重要元素。海报本身自带许多优秀的特质&#xff1a;思路清晰、内容精练&#xff0c;并且极易引起他人的兴趣。 一、…...

华为设备使能Auto-Config功能

Auto-Config is working. Before configuring the device, stop Auto-Config. If you perform configurations when Auto-Config is running, the DHCP, routing, DNS, and VTY configurations will be lost. Do you want to stop Auto-Config? [y/n] 背景信息 此任务的应用场…...

树莓派3B+入门(无外设)

昨日刚到一块树莓派3B&#xff0c;甚是喜爱&#xff0c;然半宿未眠 1、下载 在官网先下载烧录文件https://www.raspberrypi.com/software/ 下载完毕打开&#xff0c;选择&#xff0c;根据自己板子型号定 操作系统用最新的就行&#xff0c;64位不太稳定 储存卡&#xff0c;需…...