牛客周赛 Round 79

题目目录

  • A 小红的合数寻找
    • 解题思路
    • 参考代码
  • B 小红的小球染色
    • 解题思路
    • 参考代码
  • C 小红的二叉树
    • 解题思路
    • 参考代码
  • D 小红的“质数”寻找
    • 解题思路
    • 参考代码
  • E 小红的好排列
    • 解题思路
    • 参考代码
  • F 小红的小球染色期望
    • 解题思路
    • 参考代码

A 小红的合数寻找

\hspace{15pt} 小红拿到了一个正整数 x x x,她希望你在 [ x , 2 × x ] [x, 2 \times x] [x,2×x] 区间内找到一个合数,你能帮帮她吗?

\hspace{15pt} 一个数为合数,当且仅当这个数是大于 1 1 1 的整数,并且不是质数。

解题思路

因为范围比较小,所以可以暴力枚举答案。
但其实会发现除了2以外的任何偶数都是合数,所以只要 2 × x 2 \times x 2×x 不是偶数 2 2 2 也就是 x x x 不为 1 1 1 的情况下任何的 x x x 都有答案 2 × x 2 \times x 2×x

参考代码

#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
const int N = 2e5 + 10;

void solve(){
	int x;
	cin >> x;
	if(x != 1){
		cout << 2 * x << "\n";
		return;
	}
	cout << "-1\n";
	
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	
	int t = 1;
//	cin >> t;
	
	while(t --){
		solve();
	}
}

B 小红的小球染色

\hspace{15pt} n n n 个白色小球排成一排。小红每次将随机选择两个相邻的白色小球,将它们染成红色。小红将持续这个操作直到无法操作,请你计算小红操作次数可能的最小值和最大值。

解题思路

首先最大值很显然是 n / 2 n / 2 n/2 个,最小值贪心的去取的话会发现肯定是隔一个染色两个这种,也就耗费三个小球操作一次,但是需要注意如果最后还剩下两个白色小球的话也可以染色,所以最小值其实就是 ( n + 1 ) / 3 (n + 1) / 3 (n+1)/3个。

如下图:7、8小球要被染色成红色。

在这里插入图片描述

参考代码

#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
const int N = 2e5 + 10;

void solve(){
	int n;
	cin >> n;
	cout << (n + 1) / 3 << " " << n / 2 << "\n";
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	
	int t = 1;
//	cin >> t;
	
	while(t --){
		solve();
	}
}

C 小红的二叉树

\hspace{15pt} 小红想知道,深度为 n n n 的满二叉树 [1] ^{\texttt{[1]}} [1]有多少条长度为 2 2 2 的简单路径 [2] ^{\texttt{[2]}} [2]?由于答案可能很大,请将答案对 ( 1 0 9 + 7 ) (10^9+7) (109+7) 取模后输出。
\hspace{15pt} 在本题中,两条简单路径所包含的点集不同时,被视为不同的。例如,路径 u − v u-v uv 与路径 v − u v-u vu 被视为相同的,因为它们均包含点 u u u 与点 v v v

\hspace{15pt} 一棵深度为 h h h 的满二叉树 [1] ^{\texttt{[1]}} [1]由恰好 2 h − 1 2^h-1 2h1 个节点组成,每一个节点要么是叶子节点,要么有 2 2 2 个儿子,并且全部叶子节点的深度均为 h h h
\hspace{15pt} 简单路径 [2] ^{\texttt{[2]}} [2]是指这样一条路径,其经过的顶点和边互不相同。

解题思路

在这里插入图片描述
首先稍微观察一下这棵树能发现每个鸡爪(蓝色部分)都是都是一条简单路径,而且每层的鸡爪数量从上往下每层是上一层的 2 2 2 倍。这里 n n n 大于等于 2 2 2 才会计算这部分的简单路径。

在这里插入图片描述
其次,红、蓝、紫、绿圈的每个部分也都是一条简单路径,并且从上往下也是每层是上一层的 2 2 2倍。这里 n n n 大于 2 2 2 才会计算这部分的简单路径。

参考代码

#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
const int N = 2e5 + 10;
const int mod = 1e9 + 7;
i64 qm(i64 x,i64 y){
	i64 res = 1;
	while(y){
		if(y & 1){
			res = res * x % mod;
		}
		x = x * x % mod;
		y >>= 1;
	}
	return res;
}
void solve(){
	int n;
	cin >> n;
	int ans = 0;
	for(int i = 2;i <= n;i ++){
		ans = ans + qm(2,i - 2);
		ans %= mod;
	}
	for(int i = 3;i <= n;i ++){
		ans = ans + qm(2,i - 1);
		ans %= mod;
	}
	cout << ans << "\n";
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	
	int t = 1;
//	cin >> t;
	
	while(t --){
		solve();
	}
}

D 小红的“质数”寻找

\hspace{15pt} 小红拿到了一个正整数 x x x,她希望你在 [ x , 2 × x ] [x, 2 \times x] [x,2×x] 区间内找到一个正整数,满足该正整数所有数位之和为一个质数,你能帮帮她吗?

解题思路

首先这题的数据范围 x ( 1 ≦ x ≦ 1 0 100   000 ) x \left(1\leqq x\leqq 10^{100\,000}\right) x(1x10100000)超大,直接输入不可行,用字符串来输入,这么大的数据就算 O ( N ) O(N) O(N) 都无法得到答案,那么我们思考观察是不是一个特性或者结论类的题。那么好,确实通过观察,我们其实只需要判断第一个字符就可以得出答案,且无论如何都有满足条件的质数。

看代码应该就能理解了。

参考代码

#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
using ld = long double;
const int N = 2e5 + 10;
void solve(){
	string s;
	cin >> s;
	int x = s[0] - '0';
	int ans = -1;
	if(x == 1){
		ans = 2;
	}
	if(x == 2){
		ans = 3;
	}
	if(x == 3){
		ans = 5;
	}
	if(x == 4 || x == 5 || x == 6){
		ans = 7;
	}
	if(x == 7 || x == 8 || x == 9){
		ans = 11;
	}
	cout << ans;
	for(int i = 1;i < s.size();i ++){
		cout << "0";
	}
	cout << "\n";
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	
	int t = 1;
	cin >> t;
	
	while(t --){
		solve();
	}
}

E 小红的好排列

\hspace{15pt} 小红认为一个偶数长度为 n n n 的排列 { a 1 , a 2 , … , a n } \{a_1,a_2,\dots,a_n\} {a1,a2,,an} 是好排列,当且仅当恰好有一半的 i i i 使得 a i × i a_i \times i ai×i 3 3 3 的倍数。
\hspace{15pt} 小红想知道,全部长度为 n n n 的排列中,共有多少个好排列?由于答案可能很大,请将答案对 ( 1 0 9 + 7 ) (10^9+7) (109+7) 取模后输出。

\hspace{15pt} 长度为 n n n 的排列是由 1 ∼ n 1 \sim n 1n n n n 个整数、按任意顺序组成的数组,其中每个整数恰好出现一次。例如, { 2 , 3 , 1 , 5 , 4 } \{2,3,1,5,4\} {2,3,1,5,4} 是一个长度为 5 5 5 的排列,而 { 1 , 2 , 2 } \{1,2,2\} {1,2,2} { 1 , 3 , 4 } \{1,3,4\} {1,3,4} 都不是排列,因为前者存在重复元素,后者包含了超出范围的数。

解题思路

排列组合。题目要求恰好有一半的 i i i 使得 a i × i a_i \times i ai×i 3 3 3 的倍数。
首先一个长度为 n n n 的排列中有 n / 3 n / 3 n/3个数是 3 3 3 的倍数,我们暂且记为 a a a,其次我们把一半的数也就是 n / 2 n / 2 n/2 记为 b b b 。且 a a a 还是排列中下标 i i i 3 3 3 的倍数的个数。也就是说无论如何都一定最少有 a a a 个满足 a i ∗ i a_i * i aii 的数。那么我们只需要考虑 a a a 个数选 b − a b - a ba 个在下标不是 3 3 3 的倍数的下标中如何排列即可。我们先把 b − a b - a ba 记为 c c c

我们来举个例子:假设 n n n 为 6。
然后我们把下标为 3 3 3 的倍数的放一堆,不是倍数的放一堆,然后再考虑 1 1 1 n n n 的数如何去放。
在这里插入图片描述

其中,排列 A n k A_n^k Ank 的公式为:

A n k = n ! ( n − k ) ! A_n^k = \frac{n!}{(n - k)!} Ank=(nk)!n!

组合 C n k C_n^k Cnk 的公式为:

C n k = ( n k ) = n ! k ! ( n − k ) ! C_n^k = \binom{n}{k} = \frac{n!}{k!(n - k)!} Cnk=(kn)=k!(nk)!n!

除法转化为乘法逆元。

参考代码

#include<bits/stdc++.h>
#define int long long
using namespace std;
using i64 = long long;
using ld = long double;
const int N = 2e6 + 10;
const int mod = 1e9 + 7;
int fac[N];
void init(int n){
	fac[0] = 1;
	for(int i = 1;i <= n;i ++){
		fac[i] = fac[i - 1] * i % mod;
	} 
}
int qm(int x,int y){
	int res = 1;
	while(y){
		if(y & 1){
			res = res * x % mod;
		}
		x = x * x % mod;
		y >>= 1;
	}
	return res;
}
int C1(int x,int y){
	return fac[x] * qm(fac[x - y],mod - 2) % mod; 
}
int C2(int x,int y){
	return fac[x] * qm(fac[x - y],mod - 2) % mod * qm(fac[y],mod - 2) % mod; 
}
void solve(){
	int n;
	cin >> n;
	init(n);
	int a = n / 3;
	int b = n / 2;
	int c = b - a;
	int ans = 1;
	ans = C1(n - a,c) * C1(a,a - c) % mod * C1(n - a,n - a) % mod * C2(a,c) % mod;
	cout << ans << "\n";
	
}
signed main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	
	int t = 1;
//	cin >> t;
	
	while(t --){
		solve();
	}
}

F 小红的小球染色期望

\hspace{15pt} n n n 个白色小球排成一排。小红每次将随机选择两个相邻的白色小球,将它们染成红色。小红将持续这个操作直到无法操作,请你计算小红操作次数的期望。

解题思路

概率期望题。
n n n 等于 2 2 2 时,期望为:
E X = 1 × ( 1 + 0 + 0 ) EX = 1\times(1 + 0 + 0) EX=1×(1+0+0)

n n n 等于 3 3 3 时,期望为:
E X = 1 2 × ( 1 + 0 + 0 ) + 1 2 × ( 1 + 0 + 0 ) = 1 EX = \frac{1}{2}\times(1 + 0 + 0) + \frac{1}{2}\times(1 + 0 + 0) = 1 EX=21×(1+0+0)+21×(1+0+0)=1

n n n 等于 4 4 4 时,期望为:
E X = 1 3 × ( 1 + 0 + 1 ) + 1 3 × ( 1 + 0 + 0 ) + 1 3 × ( 1 + 1 + 0 ) = 5 / 3 。 EX =\frac{1}{3}\times(1 + 0 + 1) + \frac{1}{3}\times(1 + 0 + 0) + \frac{1}{3}\times(1 + 1 + 0) = 5 / 3。 EX=31×(1+0+1)+31×(1+0+0)+31×(1+1+0)=5/3

然后我们来看个 n = 6 n = 6 n=6 的推导情况再看上面式子会更清晰。

在这里插入图片描述

下面我们来计算每对小球的期望:
红色的一对小球也就是第 1 、 2 1、2 12 个小球被选择的概率为 1 5 \frac{1}{5} 51,所以期望为:
f ( 红色 ) = ( 1 + f ( 0 ) + f ( 4 ) ) f(红色) = (1 + f(0) + f(4)) f(红色)=(1+f(0)+f(4))
其中 f ( 0 ) f(0) f(0) 为这对小球左边 0 0 0 个小球的期望, f ( 4 ) f(4) f(4) 为这对小球右边 4 4 4 个小球的期望

其他的也是同样的道理。

所以我们可以大概推导到这么期望计算式子:
f ( n ) = 1 n − 1 × ( 1 + f ( x ) + f ( y ) ) f(n) = \frac{1}{n - 1}\times(1 + f(x) + f(y) ) f(n)=n11×(1+f(x)+f(y)),其中取值区间为 [ 1 , n ) [1,n) [1,n) (左闭右开)。
这里的 x x x 为 当前这对小球的左边小球有的小球个数, y y y 为 当前这对小球的右边边小球有的小球个数
稍微推导一下就是:
f ( n ) = 1 n − 1 × ( 1 + f ( x ) + f ( y ) ) f(n) = \frac{1}{n - 1}\times(1 + f(x) + f(y) ) f(n)=n11×(1+f(x)+f(y))
   = ∑ i = 1 n − 1 1 n − 1 × ( 1 + f ( i ) + f ( n − ( i + 1 ) ) ) \sum_{i=1}^{n - 1} \frac{1}{n - 1}\times(1 + f(i) + f(n - (i + 1)) ) i=1n1n11×(1+f(i)+f(n(i+1)))
   = 1 n − 1 × ∑ i = 1 n − 1 ( 1 + f ( i ) + f ( n − ( i + 1 ) ) ) \frac{1}{n - 1}\times\sum_{i=1}^{n - 1}(1 + f(i) + f(n - (i + 1)) ) n11×i=1n1(1+f(i)+f(n(i+1)))
   = 1 n − 1 × ∑ i = 1 n − 1 1 + 1 n − 1 × ∑ i = 1 n − 1 f ( i − 1 ) + 1 n − 1 × ∑ i = 1 n − 1 f ( n − ( i + 1 ) ) \frac{1}{n - 1}\times\sum_{i=1}^{n - 1}1 +\frac{1}{n - 1}\times\sum_{i=1}^{n - 1}f(i - 1) + \frac{1}{n - 1}\times\sum_{i=1}^{n - 1}f(n -(i + 1)) n11×i=1n11+n11×i=1n1f(i1)+n11×i=1n1f(n(i+1))
   = 1 n − 1 × ( n − 1 ) + 1 n − 1 × ∑ i = 1 n − 1 f ( i − 1 ) + 1 n − 1 × ∑ i = 1 n − 1 f ( n − ( i + 1 ) ) \frac{1}{n - 1}\times (n -1) +\frac{1}{n - 1}\times\sum_{i=1}^{n - 1}f(i - 1) + \frac{1}{n - 1}\times\sum_{i=1}^{n - 1}f(n -(i + 1)) n11×(n1)+n11×i=1n1f(i1)+n11×i=1n1f(n(i+1))
   = 1 + 1 n − 1 × ∑ i = 1 n − 1 f ( i − 1 ) + 1 n − 1 × ∑ i = 1 n − 1 f ( n − ( i + 1 ) ) 1+\frac{1}{n - 1}\times\sum_{i=1}^{n - 1}f(i - 1) + \frac{1}{n - 1}\times\sum_{i=1}^{n - 1}f(n -(i + 1)) 1+n11×i=1n1f(i1)+n11×i=1n1f(n(i+1))

此时,令 j = i − 1 j = i - 1 j=i1,带入得到:

   = 1 + 1 n − 1 × ∑ j = 0 n − 2 f ( j ) + 1 n − 1 × ∑ i = 1 n − 1 f ( n − ( i + 1 ) ) 1+\frac{1}{n - 1}\times\sum_{j=0}^{n - 2}f(j) + \frac{1}{n - 1}\times\sum_{i=1}^{n - 1}f(n -(i + 1)) 1+n11×j=0n2f(j)+n11×i=1n1f(n(i+1))

再令 j = n − ( i + 1 ) j = n - (i + 1) j=n(i+1),代入得到:

   = 1 + 1 n − 1 × ∑ j = 0 n − 2 f ( j ) + 1 n − 1 × ∑ j = n − 2 0 f ( j ) 1+\frac{1}{n - 1}\times\sum_{j=0}^{n - 2}f(j) + \frac{1}{n - 1}\times\sum_{j=n-2}^{0}f(j) 1+n11×j=0n2f(j)+n11×j=n20f(j)
   = 1 + 1 n − 1 × ∑ j = 0 n − 2 f ( j ) + 1 n − 1 × ∑ j = 0 n − 2 f ( j ) 1+\frac{1}{n - 1}\times\sum_{j=0}^{n - 2}f(j) + \frac{1}{n - 1}\times\sum_{j=0}^{n-2}f(j) 1+n11×j=0n2f(j)+n11×j=0n2f(j)
   = 1 + 2 n − 1 × ∑ j = 0 n − 2 f ( j ) 1+\frac{2}{n - 1}\times\sum_{j=0}^{n - 2}f(j) 1+n12×j=0n2f(j)

然后我们把 ∑ j = 0 n − 2 f ( j ) \sum_{j=0}^{n - 2}f(j) j=0n2f(j) 用前缀和计算,即 s u m [ i ] = s u m [ i − 1 ] + f [ i ] sum[i] = sum[i - 1] + f[i] sum[i]=sum[i1]+f[i],所以 n n n 个小球的期望就是:
f ( n ) = 1 + 2 n − 1 × s u m [ i − 2 ] f(n) = 1+\frac{2}{n - 1}\times sum[i - 2] f(n)=1+n12×sum[i2]
需要稍微注意初始化 f [ 0 ] = f [ 1 ] = 0 , f [ 2 ] = 1 , s u m [ 2 ] = 1 f[0] = f[1] = 0,f[2] = 1,sum[2] = 1 f[0]=f[1]=0,f[2]=1sum[2]=1
最后套公式除法变为乘法逆元就可以了。

参考代码

#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
using ld = long double;
const int N = 2e5 + 10;
const int mod = 1e9 + 7;
i64 qm(i64 x,i64 y){
	i64 res = 1;
	while(y){
		if(y & 1){
			res = res * x % mod;
		}
		x = x * x % mod;
		y >>= 1;
	}
	return res;
}
void solve(){
	int n;
	cin >> n;
	vector<i64> f(n + 1),sum(n + 1);
	f[2] = 1,sum[2] = 1;
	for(int i = 3;i <= n;i ++){
		f[i] = 1 + 2 * qm(i - 1,mod - 2) * sum[i - 2] % mod;
		sum[i] = sum[i - 1] + f[i] % mod;
	}
	cout << f[n] << "\n";
}
int main(){
	ios::sync_with_stdio(false);
	cin.tie(nullptr);
	
	int t = 1;
//	cin >> t;
	
	while(t --){
		solve();
	}
}

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

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

相关文章

Zookeeper入门部署(单点与集群)

本篇文章基于docker方式部署zookeeper集群&#xff0c;请先安装docker 目录 1. docker初期准备 2.启动zookeeper 2.1 单点部署 2.2 集群部署 3. Linux脚本实现快速切换启动关闭 1. docker初期准备 拉取zookeeper镜像 docker pull zookeeper:3.5.6 如果拉取时间过长&#xf…

【MySQL】MySQL经典面试题深度解析

文章目录 一、MySQL与C的深度结合1.1 为什么C项目需要MySQL&#xff1f;1.2 典型应用场景 二、基础概念面试题精讲2.1 存储引擎对比2.2 索引原理 三、C专项面试题解析3.1 连接池实现3.2 预处理语句3.3 批量操作优化 四、高级应用面试题剖析4.1 事务隔离级别4.2 锁机制详解4.3 查…

w190工作流程管理系统设计与实现

&#x1f64a;作者简介&#xff1a;多年一线开发工作经验&#xff0c;原创团队&#xff0c;分享技术代码帮助学生学习&#xff0c;独立完成自己的网站项目。 代码可以查看文章末尾⬇️联系方式获取&#xff0c;记得注明来意哦~&#x1f339;赠送计算机毕业设计600个选题excel文…

网络安全学习 day5

状态检测和会话技术 状态检测以 “ 数据流量 ” 为单位来对报文进行检测和转发。即对一条流量的第一个报文进行包过滤规 则检查&#xff0c;并将判断结果作为这条流量的 “ 状态 ” 记录下来 。对于该条流量的后续报文&#xff0c;直接根据这个 “ 状态 ”来判断是否转发还是…

4 前端前置技术(上):AJAX技术、Axios技术(前端发送请求)

文章目录 前言一、Ajax技术&#xff08;从服务端获取数据&#xff0c;发送各种请求&#xff09;0 接口文档管理&#xff1a;使用apipost等接口测试软件创建接口便于前端后端分离测试1 基本概念2 原生Ajax使用示例&#xff08;几年前的早期用法&#xff09; 二、 Axios技术(对原…

Node.js与嵌入式开发:打破界限的创新结合

文章目录 一、Node.js的本质与核心优势1.1 什么是Node.js?1.2 嵌入式开发的范式转变二、Node.js与嵌入式结合的四大技术路径2.1 硬件交互层2.2 物联网协议栈2.3 边缘计算架构2.4 轻量化运行时方案三、实战案例:智能农业监测系统3.1 硬件配置3.2 软件架构3.3 核心代码片段四、…

51c视觉~CV~合集10

我自己的原文哦~ https://blog.51cto.com/whaosoft/13241694 一、CV创建自定义图像滤镜 热图滤镜 这组滤镜提供了各种不同的艺术和风格化光学图像捕捉方法。例如&#xff0c;热滤镜会将图像转换为“热图”&#xff0c;而卡通滤镜则提供生动的图像&#xff0c;这些图像看起来…

OPENPPP2 —— VMUX_NET 多路复用原理剖析

在阅读本文之前&#xff0c;必先了解以下几个概念&#xff1a; 1、MUX&#xff08;Multiplexer&#xff09;&#xff1a;合并多个信号到单一通道。 2、DEMUX&#xff08;Demultiplexer&#xff09;&#xff1a;从单一通道分离出多个信号。 3、单一通道&#xff0c;可汇聚多个…

核心集:DeepCore: A Comprehensive Library for CoresetSelection in Deep Learning

目录 一、TL&#xff1b;DR 二、为什么研究核心集&#xff1f; 三、问题定义和如何做 3.1 问题定义 3.2 业界方法 3.2.1 基于几何的方法 3.2.2 基于不确定性的方法 3.2.3 基于误差/损失的方法 3.2.5 GraNd 和 EL2N 分数 3.2.6 重要性采样 3.2.7 基于决策边界的办法 …

MyBatis-Plus笔记-快速入门

大家在日常开发中应该能发现&#xff0c;单表的CRUD功能代码重复度很高&#xff0c;也没有什么难度。而这部分代码量往往比较大&#xff0c;开发起来比较费时。 因此&#xff0c;目前企业中都会使用一些组件来简化或省略单表的CRUD开发工作。目前在国内使用较多的一个组件就是…

Redis - String相关命令

目录 setgetmsetmgetsetnx、setex、psetexincr、incrby、decr、decrby、incrbyfloatappendgetrangesetrangestrlen字符串类型编码方式总结 Redis - String Redis存储的字符串&#xff0c;是直接按二进制方式存储&#xff0c;不会做任何编码转换&#xff0c;存的是什么&#xff…

优选算法合集————双指针(专题二)

好久都没给大家带来算法专题啦&#xff0c;今天给大家带来滑动窗口专题的训练 题目一&#xff1a;长度最小的子数组 题目描述&#xff1a; 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其和 ≥ target 的长度最小的 连续子数组 [numsl, numsl1, …

本地Ollama部署DeepSeek R1模型接入Word

目录 1.本地部署DeepSeek-R1模型 2.接入Word 3.效果演示 4.问题反馈 上一篇文章办公新利器&#xff1a;DeepSeekWord&#xff0c;让你的工作更高效-CSDN博客https://blog.csdn.net/qq_63708623/article/details/145418457?spm1001.2014.3001.5501https://blog.csdn.net/qq…

2. K8S集群架构及主机准备

本次集群部署主机分布K8S集群主机配置主机静态IP设置主机名解析ipvs管理工具安装及模块加载主机系统升级主机间免密登录配置主机基础配置完后最好做个快照备份 2台负载均衡器 Haproxy高可用keepalived3台k8s master节点5台工作节点(至少2及以上)本次集群部署主机分布 K8S集群主…

文字加持:让 OpenCV 轻松在图像中插上文字

前言 在很多图像处理任务中,我们不仅需要提取图像信息,还希望在图像上加上一些文字,或是标注,或是动态展示。正如在一幅画上添加一个标语,或者在一个视频上加上动态字幕,cv2.putText 就是这个“文字魔术师”,它能让我们的图像从“沉默寡言”变得生动有趣。 今天,我们…

wsl+phpstorm+xdebug|windows子系统配置phpstorm开发调试|断点调试

安装wsl 安装apache php 安装xdebug扩展&#xff0c;并配置 这里是通过宝塔9.4面板安装的xdebug3.0 [xdebug] xdebug.modedebug xdebug.start_with_requesttrue xdebug.discover_client_hosttrue xdebug.client_host127.0.0.1配置PHPSTORM 注意&#xff1a;新建服务器一定要…

5 前端系统开发:Vue2、Vue3框架(上):Vue入门式开发和Ajax技术

文章目录 前言一、Vue框架&#xff08;简化DOM操作的一个前端框架&#xff09;&#xff1a;基础入门1 Vue基本概念2 快速入门&#xff1a;创建Vue实例&#xff0c;初始化渲染&#xff08;1&#xff09;创建一个入门Vue实例&#xff08;2&#xff09;插值表达式&#xff1a;{{表…

语言月赛 202412【顽强拼搏奖的四种发法】题解(AC)

》》》点我查看「视频」详解》》》 [语言月赛 202412] 顽强拼搏奖的四种发法 题目描述 在 XCPC 竞赛里&#xff0c;会有若干道题目&#xff0c;一支队伍可以对每道题目提交若干次。我们称一支队伍对一道题目的一次提交是有效的&#xff0c;当且仅当&#xff1a; 在本次提交…

nodejs:express + js-mdict 网页查询英汉词典,能播放声音

向 DeepSeek R1 提问&#xff1a; 我想写一个Web 前端网页&#xff0c;后台用 nodejs js-mdict, 实现在线查询英语单词 1. 项目结构 首先&#xff0c;创建一个项目目录&#xff0c;结构如下&#xff1a; mydict-app/ ├── public/ │ ├── index.html │ ├── st…