【AcWing算法基础课】第四章 数学知识(未完待续)

news/2024/5/19 2:49:28/文章来源:https://blog.csdn.net/dzk666123/article/details/131647298

文章目录

  • 前言
  • 课前温习
  • 番外:秦九韶算法
    • 核心模板
  • 一、质数
    • 1. 试除法判定质数
    • 核心模板
      • 1.1题目描述
      • 1.2思路分析
      • 1.3代码实现
    • 2、试除法分解质因数
    • 核心模板
      • 1.4题目描述
      • 1.5思路分析
      • 1.6代码实现
  • 二、筛素数
    • 1.朴素筛法求素数
    • 核心模板
    • 2.线性筛法求素数(O(n))
    • 核心模板
      • 2.1题目描述
      • 2.2思路分析
      • 2.3代码实现
  • 三、欧几里得算法
    • 核心模板
      • 3.1题目描述
      • 3.2思路分析
      • 3.3代码实现
  • 四、快速幂
    • 核心模板
    • 题目一
      • 4.1题目描述
      • 4.2思路分析
      • 4.3代码实现
    • 题目二
      • 4.4题目描述
      • 4.5思路分析
      • 4.6代码实现
  • 五、求组合数
    • 核心模板
    • 题目一
      • 5.1题目描述
      • 5.2思路分析
      • 5.3代码实现
    • 题目二
      • 5.4题目描述
      • 5.5思路分析
      • 5.6代码实现
  • 六、博弈论
    • NIM游戏
    • 题目一
      • 6.1题目描述
      • 6.2思路分析
      • 6.3代码实现
    • 公平组合游戏ICG
    • 有向图游戏
    • Mex运算
    • SG函数
    • 有向图游戏的和
    • 题目二
      • 6.4题目描述
      • 6.5思路分析
      • 6.6代码实现
  • 七、约数个数和约数之和
    • 核心模板
      • 7.1题目描述
      • 7.2思路分析
      • 7.3代码实现

前言

本专栏文章为本人AcWing算法基础课的学习笔记,课程地址在这。如有侵权,立即删除。

课前温习

image

番外:秦九韶算法

利用秦九韶算法来实现其他进制转十进制的结果求解

  • 下图内容来源:百度百科,侵删。
    image

核心模板

int nToTen(string s,int n){int ans=0;for(int i=0;i<s.size();i++){   ans=ans*n+s[i]-'0';            }return ans;
}

主要代码

#include <iostream>
#include <string> 
using namespace std;
string s;
int n;
//其他进制转十进制(所有进制均适合) 
/*
int nToTen(string s,int n){int ans=0;for(int i=0;i<s.size();i++){if(s[i]>='A'&&s[i]<='Z') ans=ans*n+s[i]-'A'+10; else ans=ans*n+s[i]-'0';}return ans;
} 
*/
//其他进制转十进制(仅能处理十进制以下的进制转十进制) 
int nToTen(string s,int n){int ans=0;for(int i=0;i<s.size();i++){   ans=ans*n+s[i]-'0';            //可以这样理解:原始答案中一个数都没有,然后把第一个数加了进去,然后每次向答案中加数,都要将原来的答案整体向前移一位,空出位置留给当前位。所以结果就是ans往前移一位的结果再加上当前位的数字 }return ans;
} 
int main(){cin>>n;cin>>s;cout<<nToTen(s,n);return 0;
}

一、质数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-M5EzDUyL-1688992186447)(https://note.youdao.com/yws/res/3849/WEBRESOURCE421cbd42f83b7984ff17a84b6ff52fb0)]
(“就被称为质数”)

1. 试除法判定质数

小于x的约数是成对出现的(d和x/d),所以不需要从2枚举到n-1,只需要每次枚举较小的约数即可。即每次枚举从i到x/i。

核心模板

普通版

bool is_prime(int x){if(x<2) return false;for(int i=2;i<=x/i;i++){if(x%i==0){return false;}}return true;
}

优化版

bool is_prime(int x){if(x<=3) return x>1;if(x%6!=1&&x%6!=5) return false;for(int i=5;i<=x/i;i+=6){if(x%i==0&&x%(i+2)==0) return false;}return true;
}

题目链接
866. 试除法判定质数

1.1题目描述

给定 n 个正整数 ai,判定每个数是否是质数。

输入格式

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

输出格式

共 n 行,其中第 i 行输出第 i 个正整数 ai 是否为质数,是则输出 Yes,否则输出 No。

数据范围

1≤n≤100,1≤ai≤231−1

输入样例

2
2
6

输出样例

Yes
No

1.2思路分析

套用模板即可,注意细节。

1.3代码实现

#include <iostream>
using namespace std;
const int N=110;
int a[N];
int n;
bool is_p(int n){if(n<2) return false;for(int i=2;i<=n/i;i++){if(n%i==0) return false;}return true;
}
int main(){cin>>n;for(int i=0;i<n;i++){cin>>a[i];if(is_p(a[i]))  cout<<"Yes"<<endl;else cout<<"No"<<endl;}return 0;
}

2、试除法分解质因数

  • 下图内容来源:百度百科,侵删。
    image

思路

  • 下图内容来源这里,侵删。
    image

核心模板

void divide(int x){for(int i=2;i<=x/i;i++){if(x%i==0){int s=0;while(x%i==0) x/=i,s++;cout<<i<<' '<<s<<endl;}}if(x>1) cout<<x<<' '<<1<<endl;cout<<endl;
}

题目链接:867. 分解质因数

1.4题目描述

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

输入格式

第一行包含整数 n。

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

输出格式

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

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

数据范围

1≤n≤100,2≤ai≤2×109

输入样例

2
6
8

输出样例

2 1
3 12 3

1.5思路分析

套用模板即可,注意细节。

1.6代码实现

#include <iostream>
using namespace std;
int n;
void divide(int n){for(int i=2;i<=n/i;i++){if(n%i==0){int s=0;while(n%i==0){n/=i;s++;}cout<<i<<' '<<s<<endl;}}if(n>1) cout<<n<<' '<<1<<endl;cout<<endl;
}
int main(){cin>>n;while(n--){int a;cin>>a;divide(a);}return 0;
}

二、筛素数

1.朴素筛法求素数

从2到n枚举每个数,删掉其所有的倍数,枚举完之后,没有被删掉的数为质数。

核心模板

int primes[N],cnt;   //primes[]存储所有素数
bool st[N];    //st[x]存储x是否被筛掉
void get_primes(int n){st[0]=st[1]=true;           //0和1均不是质数for(int i=2;i<=n;i++){if(st[i]) continue;primes[cnt++]=i;for(int j=i+i;j<=n;j+=i){st[j]=true;}}
}

埃氏筛法

int primes[N],cnt;   //primes[]存储所有素数
bool st[N];    //st[x]存储x是否被筛掉
void get_primes(int n){st[0]=st[1]=true;           //0和1均不是质数for(int i=2;i<=n;i++){if(!st[i]){primes[cnt++]=i;for(int j=i+i;j<=n;j+=i){st[j]=true;}}}
}

2.线性筛法求素数(O(n))

image

核心模板

int primes[N],cnt;   //primes[]存储所有素数
bool st[N];   //st[x]存储x是否被筛掉
void get_primes(int n){st[0]=st[1]=true;           //0和1均不是质数for(int i=2;i<=n;i++){if(!st[i]) primes[cnt++]=i;for(int j=0;primes[j]<=n/i;j++){st[primes[j]*i]=true;if(i%primes[j]==0) break;}}
}

题目链接:868. 筛质数

2.1题目描述

给定一个正整数 n,请你求出 1∼n 中质数的个数

输入格式

共一行,包含整数 n。

输出格式

共一行,包含一个整数,表示 1∼n 中质数的个数。

数据范围

1≤n≤106

输入样例

8

输出样例

4

2.2思路分析

利用上述模板即可。

2.3代码实现

埃氏筛法

#include <iostream>
using namespace std;
const int N=1000010;
int n,cnt;
int primes[N];
bool st[N];
void getPrimes(int n){for(int i=2;i<=n;i++){if(!st[i]){primes[cnt++]=i;for(int j=i+i;j<=n;j+=i){st[j]=true;}}}
}
int main(){cin>>n;getPrimes(n);cout<<cnt;return 0;
}

线性筛法

#include <iostream>
using namespace std;
const int N=1000010;
int n,cnt;
int primes[N];
bool st[N];
void getPrimes(int n){for(int i=2;i<=n;i++){if(!st[i]) primes[cnt++]=i;for(int j=0;primes[j]<=n/i;j++){st[i*primes[j]]=true;if(i%primes[j]==0) break;    //此时primes[j]一定是i的最小质因子}}     
}
int main(){cin>>n;getPrimes(n);cout<<cnt;return 0;
}

三、欧几里得算法

核心思路ab的最大公约数等于ba mod b的最大公约数。
最大公约数和最小公倍数的关系

  • 下图内容来源:百度百科,侵删。
    image

核心模板

int gcd(int a,int b){return b?gcd(b,a%b):a;
}

题目链接:872. 最大公约数

3.1题目描述

给定 n 对正整数 ai,bi,请你求出每对数的最大公约数

输入格式

第一行包含整数 n。

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

输出格式

输出共 n 行,每行输出一个整数对的最大公约数。

数据范围

1≤n≤105,1≤ai,bi≤2×109

输入样例

2
3 6
4 6

输出样例

3
2

3.2思路分析

使用如上欧几里得算法。

3.3代码实现

#include <iostream>
using namespace std;
int n;
int gcd(int a,int b){return b?gcd(b,a%b):a;
}
int main(){cin>>n;while(n--){int a,b;cin>>a>>b;cout<<gcd(a,b)<<endl;}return 0;
}

四、快速幂

核心模板

m^k mod p,时间复杂度O(logk)。

int qmi(int m,int k,int p){int res=1%p,t=m;while(k){if(k&1) res=res*t%p;t=t*t%p;k>>=1;}return res;
}

题目一

题目链接:875. 快速幂

4.1题目描述

给定 n 组 ai,bi,pi,对于每组数据,求出 aibi mod pi 的值

输入格式

第一行包含整数 n。

接下来 n 行,每行包含三个整数 ai,bi,pi。

输出格式

对于每组数据,输出一个结果,表示 aibi mod pi 的值。

每个结果占一行。

数据范围

1≤n≤100000,1≤ai,bi,pi≤2×109

输入样例

2
3 2 5
4 3 9

输出样例

4
1

4.2思路分析

利用快速幂算法进行求解:首先预处理出a的次幂的结果,然后将ak拆分成这些预处理结果的组合(将k拆成2的次方的和,即k的二进制表示为1的所有2的次幂),即利用这些预处理的结果来计算ak
image
例子:
image

4.3代码实现

#include <iostream>
using namespace std;
typedef long long LL;
//快速幂,返回a^k%p的结果
int qmi(int a,int k,int p){LL res=1%p;         //存储结果while(k){         //枚举k的每位数字if(k&1) res=res*a%p;     //如果该位数字为1,则res乘上当前数字代表的二进制中的权重(即2的多少次幂)k>>=1;a=(LL)a*a%p;             //a每次翻倍,预处理出当前a的次幂的结果}return res;
}
int n;
int main(){cin>>n;while(n--){int a,k,p;cin>>a>>k>>p;cout<<qmi(a,k,p)<<endl;}return 0;
}

题目二

题目链接:876. 快速幂求逆元

4.4题目描述

给定 n 组 ai,pi,其中 pi 是质数,求 ai 模 pi 的乘法逆元,若逆元不存在则输出 impossible

注意:请返回在 0∼p−1 之间的逆元。

乘法逆元的定义

若整数 b,m 互质,并且对于任意的整数 a,如果满足 b|a,则存在一个整数 x,使得 a / ≡ a * x(mod m),则称 x 为 b 的模 m 乘法逆元,记为 b−1 (mod m)。
b 存在乘法逆元的充要条件是 b 与模数 m 互质。当模数 m 为质数时,bm−2 即为 b 的乘法逆元。

输入格式

第一行包含整数 n。

接下来 n 行,每行包含一个数组 ai,pi,数据保证 pi 是质数。

输出格式

输出共 n 行,每组数据输出一个结果,每个结果占一行。

若 ai 模 pi的乘法逆元存在,则输出一个整数,表示逆元,否则输出 impossible

数据范围

1≤n≤105,1≤ai,pi≤2∗109

输入样例

3
4 3
8 5
6 3

输出样例

1
2
impossible

4.5思路分析

由题目信息可得到以下化简。
image
该问题就化简成了求:b * x ≡ 1 (mod p )。x即为所求的逆元。
由费马小定理可知:b^p-1 ≡ 1 (mod p )。所以我们结合上述两个式子可知,x=bp-2
image

  • 下图内容来源:百度百科,侵删。
    image

b如果是p的倍数则无解。
原因:如果p是b的倍数,那么p*x也是p的倍数,mod p之后一定等于0,不可能等于1(也就是得满足费马小定理的条件)。

4.6代码实现

#include <iostream>
using namespace std;
typedef long long LL;
//快速幂模板,返回a^k%p
int qmi(int a,int k,int p){LL res=1%p;while(k){if(k&1) res=res*a%p;k>>=1;a=(LL)a*a%p;}return res;
}
int n;
int main(){cin>>n;while(n--){int a,p;cin>>a>>p;int ans=qmi(a,p-2,p);      //ans代表所要求的逆元,即ans=a^p-2if(a%p) cout<<ans<<endl;   else cout<<"impossible"<<endl;    //无解情况:a%p=0时无解}return 0;
}

五、求组合数

核心模板

  1. 根据下面公式来预处理出等式右边的组合数的值,那么等式左边就可以用等式右边已经算过的值来进行计算(有点像dp)
    image
//c[a][b]表示从a个苹果中选b个的方案数
for(int i=0;i<N;i++){for(int j=0;j<=i;j++){if(!j) c[i][j]=1;else c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;}
}
  1. 如下
    image
首先预处理出所有阶乘取模的余数fact[N],以及所有阶乘取模的逆元infact[N]
如果取模的数是质数,可以用费马小定理求逆元
typedef long long LL;
//快速幂模版
int qmi(int a,int k,int p){LL res=1%p;while(k){if(k&1) res=res*a%p;k>>=1;a=(LL)a*a%p;}return res;
}
//预处理阶乘的余数和阶乘逆元的余数
fact[0]=infact[0]=1;
for(int i=1;i<N;i++){fact[i]=(LL)fact[i-1]*i%mod;infact[i]=(LL)infact[i-1]*qmi(i,mod - 2,mod)%mod;
}

题目一

题目链接:885. 求组合数 I

5.1题目描述

image

5.2思路分析

利用模板1求解即可。

5.3代码实现

#include <iostream>
using namespace std;
const int N=2010,mod=1e9+7;
int c[N][N];
int n;
//求组合数
void solve(){for(int i=0;i<N;i++){for(int j=0;j<=i;j++){if(!j) c[i][j]=1;else c[i][j]=(c[i-1][j]+c[i-1][j-1])%mod;}}
}
int main(){cin>>n;solve();while(n--){int a,b;cin>>a>>b;cout<<c[a][b]<<endl;}return 0;
}

题目二

题目链接
886. 求组合数 II

5.4题目描述

image

5.5思路分析

利用模板2求解即可。

  • 下图作者如图,侵删。
    image

5.6代码实现

#include <iostream>
using namespace std;
typedef long long LL;
const int N=100010,mod=1e9+7;
int fact[N],infact[N];   //fact[i]存储i!%mod的值;infact[i]存储i!的逆元%mod的值
int n;
//快速幂模板
int qmi(int a,int k,int p){LL res=1%p;while(k){if(k&1) res=res*a%p;k>>=1;a=(LL)a*a%p;}return res;
}
int main(){cin>>n;fact[0]=infact[0]=1;    //0!%mod和其逆元%mod的值为1//预处理出fact[]和infact[]for(int i=1;i<N;i++){fact[i]=(LL)fact[i-1]*i%mod;            //求每个阶乘%mod的结果infact[i]=(LL)infact[i-1]*qmi(i,mod-2,mod)%mod;    //求每个阶乘的逆元%mod的结果}while(n--){int a,b;cin>>a>>b;cout<<(LL)fact[a]*infact[b]%mod*infact[a-b]%mod<<endl;    //按照组合数公式进行计算}return 0;
}

六、博弈论

NIM游戏

给定N堆物品,第i堆物品有Ai个。两名玩家轮流行动,每次可以任选一堆,取走任意多个物品,可把一堆取光,但不能不取。取走最后一件物品者获胜。两人都采取最优策略,问先手是否必胜。
我们把这种游戏称为NIM博弈。把游戏过程中面临的状态称为局面。整局游戏第一个行动的称为先手,第二个行动的称为后手。若在某一局面下无论采取何种行动,都会输掉游戏,则称该局面必败。
所谓采取最优策略是指,若在某一局面下存在某种行动,使得行动后对面面临必败局面,则优先采取该行动。同时,这样的局面被称为必胜。我们讨论的博弈问题一般都只考虑理想情况,即两人均无失误,都采取最优策略行动时游戏的结果。
NIM博弈不存在平局,只有先手必胜和先手必败两种情况。

定理: NIM博弈先手必胜,当且仅当 A1 ^ A2 ^ … ^ An != 0
image
image

题目一

题目链接: 891. Nim游戏

6.1题目描述

给定 n 堆石子,两位玩家轮流操作,每次操作可以从任意一堆石子中拿走任意数量的石子(可以拿完,但不能不拿),最后无法进行操作的人视为失败。

问如果两人都采用最优策略先手是否必胜

输入格式

第一行包含整数 n。

第二行包含 n 个数字,其中第 i 个数字表示第 i 堆石子的数量。

输出格式

如果先手方必胜,则输出 Yes

否则,输出 No

数据范围

1≤n≤105,1≤每堆石子数≤109

输入样例

2
2 3

输出样例

Yes

6.2思路分析

计算所有数的异或值,如果值不为0,则先手必胜,否则先手必败。

6.3代码实现

#include <iostream>
using namespace std;
int n;
int main(){cin>>n;int res=0;while(n--){int x;cin>>x;res^=x;      //计算所有数的异或值}if(res) cout<<"Yes"<<endl;   //如果值不为0,则先手必胜else cout<<"No"<<endl;       //否则,先手必败return 0;
}

公平组合游戏ICG

若一个游戏满足:

  1. 由两名玩家交替行动;
  2. 在游戏进程的任意时刻,可以执行的合法行动与轮到哪名玩家无关;
  3. 不能行动的玩家判负;

则称该游戏为一个公平组合游戏。
NIM博弈属于公平组合游戏,但城建的棋类游戏,比如围棋,就不是公平组合游戏。因为围棋交战双方分别只能落黑子和白子,胜负判定也比较复杂,不满足条件2和条件3。

有向图游戏

给定一个有向无环图,图中有一个唯一的起点,在起点上放有一枚棋子。两名玩家交替地把这枚棋子沿有向边进行移动,每次可以移动一步,无法移动者判负。该游戏被称为有向图游戏。
任何一个公平组合游戏都可以转化为有向图游戏。具体方法是,把每个局面看成图中的一个节点,并且从每个局面向沿着合法行动能够到达的下一个局面连有向边。

Mex运算

设S表示一个非负整数集合。定义mex(S)为求出不属于集合S的最小非负整数的运算,即:
mex(S) = min{x}, x属于自然数,且x不属于S。

SG函数

在有向图游戏中,对于每个节点x,设从x出发共有k条有向边,分别到达节点y1, y2, …, yk,定义SG(x)为x的后继节点y1, y2, …, yk 的SG函数值构成的集合再执行mex(S)运算的结果,即:
SG(x) = mex({SG(y1), SG(y2), …, SG(yk)})
特别地,整个有向图游戏G的SG函数值被定义为有向图游戏起点s的SG函数值,即SG(G) = SG(s)。

有向图游戏的和

设G1, G2, …, Gm 是m个有向图游戏。定义有向图游戏G,它的行动规则是任选某个有向图游戏Gi,并在Gi上行动一步。G被称为有向图游戏G1, G2, …, Gm的和。
有向图游戏的和的SG函数值等于它包含的各个子游戏SG函数值的异或和,即:
SG(G) = SG(G1) ^ SG(G2) ^ … ^ SG(Gm)

定理
有向图游戏的某个局面必胜,当且仅当该局面对应节点的SG函数值大于0
有向图游戏的某个局面必败,当且仅当该局面对应节点的SG函数值等于0

题目二

题目链接:893. 集合-Nim游戏

6.4题目描述

给定 n 堆石子以及一个由 k 个不同正整数构成的数字集合 S。

现在有两位玩家轮流操作,每次操作可以从任意一堆石子中拿取石子,每次拿取的石子数量必须包含于集合 S ,最后无法进行操作的人视为失败。

问如果两人都采用最优策略,先手是否必胜

输入格式

第一行包含整数 k,表示数字集合 S 中数字的个数。

第二行包含 k 个整数,其中第 i 个整数表示数字集合 S 中的第 i 个数 si。

第三行包含整数 n。

第四行包含 n 个整数,其中第 i 个整数表示第 i 堆石子的数量 hi。

输出格式

如果先手方必胜,则输出 Yes

否则,输出 No

数据范围

1≤n,k≤100,1≤si,hi≤10000

输入样例

2
2 5
3
2 4 7

输出样例

Yes

6.5思路分析

详见代码注释。

6.6代码实现

#include <iostream>
#include <cstring>
#include <unordered_set>
using namespace std;
const int N=110,M=10010;
int k,n;       //k为可以取石子的方案数(即一次取多少个)
int s[N],f[M];  //f[]存储每堆石子的sg值
//求石子数量为x的这一堆石子的sg值
int sg(int x){if(f[x]!=-1) return f[x];   //如果该值已经被算过则直接返回unordered_set<int> S;     //存放x各个后继结点的sg值//遍历k种取法for(int i=0;i<k;i++){int sum=s[i];          //sum为本次取法取多少个石子if(x>=sum) S.insert(sg(x-sum));    //如果可以取,则将取后的后继结点的sg值加入S}for(int i=0;;i++){//对S求mex,求出不在集合中的最小自然数if(!S.count(i)) return f[x]=i;}
}
int main(){cin>>k;for(int i=0;i<k;i++) cin>>s[i];cin>>n;int ans=0;memset(f,-1,sizeof f);for(int i=0;i<n;i++){int x;cin>>x;ans^=sg(x);    //n堆石子的sg的值异或起来不为0,则先手必胜}if(ans) cout<<"Yes"<<endl;else cout<<"No"<<endl;return 0;
}

七、约数个数和约数之和

  • 下图作者如图,侵删。
    image
  • int范围内的数最多约数个数约为1600个
    image

核心模板

如果 N = p1^c1 * p2^c2 * ... *pk^ck
约数个数: (c1 + 1) * (c2 + 1) * ... * (ck + 1)
约数之和: (p1^0 + p1^1 + ... + p1^c1) * ... * (pk^0 + pk^1 + ... + pk^ck)

题目链接
870. 约数个数

7.1题目描述

image

7.2思路分析

将每个数质因数分解,利用unordered_map进行存储所有pi及其指数,即每分解一个数,将分解后对应的pi的指数加上分解质因数的次数。

7.3代码实现

#include <iostream>
#include <unordered_map>
using namespace std;
typedef long long LL;
const int mod=1e9+7;
int n;
int main(){cin>>n;unordered_map<int,int> hash;   //存储每个pi和其指数while(n--){int a;cin>>a;for(int i=2;i<=a/i;i++){   //注意循环从2~a/iwhile(a%i==0){hash[i]++;   //i的指数++a/=i;  }}if(a>1) hash[a]++;    //注意if位置}LL ans=1;for(auto i:hash) ans=ans*(i.second+1)%mod;cout<<ans;return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_328875.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue拼接html中onclick的触发方式,模版字符串拼接点击事件在vue项目中不生效问题

模版字符串拼接点击事件在vue项目中不生效问题 下面的点击事件没有任何效果&#xff0c;但是如果换成onclick绑定事件则会提示没有该方法。主要原因是&#xff1a; 模版字符串中拼接的html片段中的方法调不到vue中this.methods里的东西&#xff0c;因为methods里的代码是编译…

STM32 Proteus UCOSII系统多路数据采集系统8路开关量4路电压-0058

STM32 Proteus UCOSII系统多路数据采集系统8路开关量4路电压-0058 Proteus仿真小实验&#xff1a; STM32 Proteus UCOSII系统多路数据采集系统8路开关量4路电压-0058 功能&#xff1a; 硬件组成&#xff1a;STM32F103R6单片机 LCD1602显示器8路光耦隔离开关量采集4路微小信号…

你的流量虚了吗?分析手机流量卡不足量的套路

当今时代&#xff0c;手机流量的使用是每个人每天都在消耗的事情&#xff0c;在有WIFI的情况下还好&#xff0c;大家不需要担心流量用多了还是少了&#xff0c;但是在使用手机流量的时候&#xff0c;就需要注意了&#xff0c;看看是不是会用超什么的&#xff0c;但是现在有一个…

网络编程5——TCP协议的五大效率机制:滑动窗口+流量控制+拥塞控制+延时应答+捎带应答

文章目录 前言一、TCP协议段与机制TCP协议的特点TCP报头结构TCP协议的机制与特性 二、TCP协议的 滑动窗口机制 三、TCP协议的 流量控制机制 四、TCP协议的 拥塞控制机制 五、TCP协议的 延时应答机制 六、TCP协议的 捎带应答机制 总结 前言 本人是一个普通程序猿!分享一点自己的…

QT事件处理

设计一个闹钟&#xff0c;定时播报内容。 #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QTimerEvent> #include <QDateTime> #include <QMessageBox> #include <QTextToSpeech> #include <QDebug> namespa…

41. 同时在线人数问题

文章目录 题目需求思路一实现一学习链接题目来源 题目需求 现有各直播间的用户访问记录表&#xff08;live_events&#xff09;如下。 表中每行数据表达的信息为&#xff1a;一个用户何时进入了一个直播间&#xff0c;又在何时离开了该直播间。 现要求统计各直播间最大同时在…

21-注册中心与配置中心Nacos

已经使用过了Spring cloud提供的Geteway、openFeign。 1、注册中心与配置中心 1.1、注册中心 相当于通讯录,让应用之间相互认识。 用途: 实例的健康检查。 路由转发:为了控制成本,会对机器做动态扩容,此时IP就不固定了。 远程调用。 1.2、配置中心 动态修改线上的配…

Java 匿名对象

一、简介 1.1.含义 没有名字的对象 。以常规的创建对象的方法&#xff1a; AtomicInteger atomicInteger new AtomicInteger(100000);格式&#xff1a; 类名 变量名 new 类名(); 这样就完成了对象的创建。注意&#xff1a;&#xff08;&#xff09;内可以无参数&#xff0c…

Zabbix 的使用 续

Zabbix 的使用 续 一、部署 zabbix 代理服务器1.1 环境准备1.2 设置 zabbix 的下载源&#xff0c;安装 zabbix-proxy1.3 部署数据库&#xff0c;要求 MySQL 5.7 或 Mariadb 10.5 及以上版本1.4 导入数据库信息1.5 修改 zabbix-proxy 配置文件1.6 启动 zabbix-proxy1.7 在所有主…

ARM day10 (IIC协议接收温湿传感器数据)

iic.h #ifndef __IIC_H__ #define __IIC_H__ #include "stm32mp1xx_gpio.h" #include "stm32mp1xx_rcc.h" /* 通过程序模拟实现I2C总线的时序和协议* GPIOF ---> AHB4* I2C1_SCL ---> PF14* I2C1_SDA ---> PF15** */#define SET_SDA_OUT do{…

vue 多环境打包指令配置及编译

1.创建多环境: 在根目录创建.env.xxx文件,如下为例(我创建了两个) 文件内容主要包括&#xff1a; # 页面标题 VUE_APP_TITLE "标题"# 生产环境配置 ENV production# DNA检测仓储管理系统/生产环境 VUE_APP_BASE_API https://xxxxxx 2.设置: 修改根目录下的package…

行业追踪,2023-07-10,汽车零部件如期调整,需要耐心等待第二波

自动复盘 2023-07-10 成交额超过 100 亿 排名靠前&#xff0c;macd柱由绿转红 成交量要大于均线 有必要给每个行业加一个上级的归类&#xff0c;这样更能体现主流方向 rps 有时候比较滞后&#xff0c;但不少是欲杨先抑&#xff0c; 应该持续跟踪&#xff0c;等 macd 反转时参与…

【MATLAB第53期】基于MATLAB的TSK模糊神经网络时间序列预测模型,含短期预测未来功能

【MATLAB第53期】基于MATLAB的TSK模糊神经网络时间序列预测模型&#xff0c;含短期预测未来功能 一、效果展示 二、数据设置 数据采用一列数据滑动窗口设置为5 &#xff0c;可自行设置70%训练30%测试预测未来值为10 &#xff0c;可自行设置&#xff0c;控制10以内 三、模型…

欧科云链联合大湾区警方共话区块链安全

为了应对日益严峻的区块链衍生犯罪&#xff0c;日前欧科云链联合粤港澳大湾区警务人员在深圳开展了为期一天的三地警务研讨会&#xff0c;期间获得包括香港商报、澳门日报、澳门法治报、澳门商报、香港雅虎财经等多家港澳权威媒体的报道&#xff0c;引发三地警务机关的高度关注…

开发实例:实现一个时间轮算法

时间轮算法是一种比较常见的时间计数器算法&#xff0c;它主要用于定时器的处理。在Java开发中&#xff0c;我们可以使用这种算法来实现非常高效且精准的定时器功能。下面&#xff0c;我将为大家介绍一个基于时间轮算法的定时器实现方法。 1、定义时间轮的数据结构 首先&…

【JAVA】JAVA与C++的区别与联系

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️初识JAVA】 文章目录 前言两方介绍CJAVA 不同|Java不支持指针、模板、指针重载、联合等||支持析构函数||条件编译和包含||螺纹支架||默认参数||转到语句||多重继承||异常处理||方法重载和操作符重载|…

Stable Diffusion - 图像控制插件 ControlNet (OpenPose) 配置与使用

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/131591887 论文&#xff1a;Adding Conditional Control to Text-to-Image Diffusion Models ControlNet 是神经网络结构&#xff0c;用于控制预…

【Linux从入门到放弃】进程状态的理解以及什么是僵尸进程和孤儿进程?

&#x1f9d1;‍&#x1f4bb;作者&#xff1a; 情话0.0 &#x1f4dd;专栏&#xff1a;《Linux从入门到放弃》 &#x1f466;个人简介&#xff1a;一名双非编程菜鸟&#xff0c;在这里分享自己的编程学习笔记&#xff0c;欢迎大家的指正与点赞&#xff0c;谢谢&#xff01; 文…

JavaScrpt_11 Web API 事件流、委托事件、其它事件、元素尺寸与位置

JavaScrpt_11 Web API 事件流、委托事件、其它事件、元素尺寸与位置 前言一、事件流1. 捕获和冒泡2. 阻止冒泡 二、委托事件三、其它事件1. 页面加载事件 2. 元素滚动事件 3. 页面尺寸事件 四、元素尺寸与位置 前言 进一步学习 事件进阶&#xff0c;实现更多交互的网页特效&…

今天分享:智能ai绘画软件哪个好

在一个遥远的未来&#xff0c;艺术界经历了一场革命性的变革。艺术家们不再依赖传统的画笔和颜料&#xff0c;而是转向了ai绘画工具&#xff0c;这是一种集人工智能和创造力于一身的技术。在这个世界中&#xff0c;我有幸遇到了一个与众不同的艺术家&#xff0c;他的名字叫亚历…