西安石油大学2023年第三届里奇杯编程大赛(初赛)

news2024/11/29 18:43:28

官方题解地址1v7w (郭毅佬!):https://www.cnblogs.com/1v7w/p/17437203.html

A 签到

描述

你说得对,但是 “ 里奇杯 ” 是西安石油大学计算机协会举办的程序设计竞赛,比赛旨在激发同学们学习程序设计的热情,提高编程能力,调动编程的兴趣和积极性,在这里,你将扮演名为“参赛选手”的神秘角色,展示分析问题、解决问题和动手编程的能力,培养创新思维,开拓视野,邂逅志趣相投的同伴,同时,逐步发掘 “ 算法 ” 的魅力。

输入

无

输出

输出一行字符串Hello Liqi contest


输入样例 1     无
输出样例 1     Hello Liqi contest
#include <bits/stdc++.h>
using namespace std;
 
int main()
{
 cout << "Hello Liqi contest";
 return 0;
}

其他方法(推荐去leetcode或者洛谷去看各路神仙的输出方法,直接劝退萌新doge)


以下是几种在C++中输出"Hello Liqi contest"的方法:

1. 使用cout语句:
```
#include <iostream>

using namespace std;

int main() {
    cout << "Hello Liqi contest" << endl;
    return 0;
}
```

2. 使用printf语句:
```
#include <stdio.h>

int main() {
    printf("Hello Liqi contest\n");
    return 0;
}
```

3. 使用puts语句:
```
#include <stdio.h>

int main() {
    puts("Hello Liqi contest");
    return 0;
}
```

4. 将字符串存储到变量中,再使用cout语句输出:
```
#include <iostream>
#include <string>

using namespace std;

int main() {
    string str = "Hello Liqi contest";
    cout << str << endl;
    return 0;
}
```

B 挂科

描述

老师希望同学们都能取得一个好成绩,所以每次成绩出来,老师去统计一下有多少同学挂科了。现在老师安排让1v7w去统计,但他数数不太行,请你给写个程序帮他统计一下。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6SszeRBt-1687177451108)(2023-06-04-21-00-48.png)]
分析思路
在这个示例中,我们先定义三个变量,分别表示学生数量、及格线和学生成绩数组。然后使用scanf函数从标准输入中读取n和p的值,再使用for循环读取n个学生的成绩到数组a中。

最后,使用一个for循环遍历所有学生成绩,输出及格的学生成绩。

#include <stdio.h>
int main() 
{
   int n, p, a[105];
   scanf("%d%d", &n, &p);
   for (int i = 0; i < n; i++) {
      scanf("%d", &a[i]);
   }

   // 输出所有及格学生的成绩
   printf("及格的学生成绩:");
   for (int i=0;i<n;i++){
      if (a[i] >= p) {
         printf("%d ", a[i]);
      }
   }
   printf("\n");
   return 0;
}

官方题解:

//这段代码实现了统计成绩低于及格线的学生数量。
//首先,我们定义了一个常量N表示数组a的最大长度。
//然后,使用scanf函数从标准输入中读取n和p的值,
//并使用for循环遍历n个学生的成绩,并把它们存储在数组a中。
//接下来,我们定义一个变量res,用于记录成绩低于及格线的学生数量。
//使用一个循环遍历数组a,如果某个学生成绩小于及格线,则将res的值加一。

最后,输出成绩低于及格线的学生数量res即可。
#include <iostream>
#include <algorithm>
 
using namespace std;
 
const int N =  1e5+10;
int n, p, a[N], res;
 
int main() {
    scanf("%d%d", &n, &p);
    for(int i=1; i<=n; i++) {
        scanf("%d", &a[i]);
        if(a[i] < p) res++;
    }
    printf("%d\n", res);
    return 0;
}

C 送外卖

暑假1v7w想要赚钱,于是就进入了美团大厂,成为了一名骑手。

这一天他抢到了 n 个订单,这些订单的目的地都在宝鸡钢管路上(可以看做在一条坐标轴上),第 i 个订单的目的地的位置是 。

帮1v7w找一下,他最少走多长的距离就能够把外卖全部送完?这里他可以从任意一点开始送外卖,并从任意一点结束送外卖。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ErPiyk80-1687177451111)(2023-06-04-21-15-21.png)]

经过论证,可以发现,沿着坐标轴,从左到右一口气送完外卖是最佳方案。故将求出 a的最大值与最小值后直接相减即可。
官方题解:
这段代码实现了求取n个数中最大值和最小值的差。

在main函数中,我们首先使用scanf函数读取变量n的值。接着,我们定义了两个变量minv和maxv,分别表示当前遍历到数列中出现的最小值和最大值(初始值需要设得足够大或小)。使用一个循环遍历输入的n个数,更新minv和maxv的值。最后,输出maxv和minv的差就是答案。

在代码中还有一部分注释掉了,这部分代码是用于多组数据的处理。如果输入有多组数据,需要将其放在while(t–)循环内部来解决。

#include <iostream>
#include <algorithm>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <string>
#include <cstring>
#include <cmath>
 
#define fi first
#define se second
 
using namespace std;
using ll = long long;
using pii = pair<int, int>;
 
const double eps = 1e-4;
const int N = 110;
int n;
 
void solve() {
    scanf("%d", &n);
    int minv = 1e9, maxv = 0;
    for(int i=1; i<=n; i++) {
        int x; scanf("%d", &x);
        minv = min(minv, x);
        maxv = max(maxv, x);
    }
    printf("%d\n", maxv-minv);
}
 
int main() {
    // multiple case
    // int t; scanf("%d", &t);
    // while(t--) {
    //     solve();
    // }
 
    // single case
    solve();
 
    return 0;
}

经过论证,可以发现,沿着坐标轴,从左到右一口气送完外卖是最佳方案。故将求出 a的最大值与最小值后直接相减即可。

#include <iostream>
#include <algorithm>

using namespace std;

const int N = 110;
int n, a[N];

int main() {
    cin >> n;
    for (int i = 0; i < n; i++) {
        cin >> a[i];
    }
    int maxv = *max_element(a, a + n);   // 求数组a中的最大值
    int minv = *min_element(a, a + n);   // 求数组a中的最小值

    cout << maxv - minv << endl;   // 输出最大值与最小值的差

    return 0;
}

首先,使用cin从标准输入中读取变量n的值,并用一个for循环遍历将后面n个数读入数组a中。

然后,使用STL库函数*max_element*min_element分别求得a中的最大值和最小值,并依次赋值给maxv和minv。

最后,输出maxv和minv的差就是答案。

D 分弹珠

描述

你和你的好朋友在放学的路上捡到了N颗弹珠(每颗弹珠都是一模一样的),看到四下无人,你们俩打算将这些弹珠分掉,请问在确保每个人都能分到的情况下共有多少种分配方式?

输入
第一行包含一个整数 1≤ ≤15

N(1≤N≤15),表示弹珠的总数。

输出

输出一个整数,表示分配方式的总数。

官方题解

每个弹珠都一模一样,故弹珠分配方案的不同只有每个人分的的弹珠多少。

每个人能分得的弹珠数量区间是 [1,n−1] ,故方案数为 n−1。这里直接把弹珠数量为 1的情况(没有合理的分配方案)也涵盖了。

#include <bits/stdc++.h>
using namespace std;
int n;
int main()
{
	cin >> n;
	cout << n - 1;
	return 0;
}

E.加倍整数

描述

我们将一个位数为偶数且前半部分与后半部分相同的数称为加倍整数,例如:
11

1212

123123
11,1212,123123 等。

给你一个整数 N ,请问从 1 到 N 有多少个加倍整数?

输入
第一行包含一个整数 1 <= N <= 10^12

输出
输出一行,表示加倍整数的个数。

官方题解

比起判断某个数是否为加倍整数,不如直接构造加倍整数出来,判断他与 n的关系。

#include <iostream>
#include <algorithm>
#include <queue>
#include <set>
#include <map>
#include <vector>
#include <string>
#include <cstring>
#include <cmath>
 
#define fi first
#define se second
 
using namespace std;
using ll = long long;
using pii = pair<int, int>;
 
const double eps = 1e-4;
const int N = 1e6+10;
ll n;
 
// 将x变为xx的加倍整数
inline ll bianshen(ll x) {
    string s = to_string(x);
    s = s + s;
    return stoll(s);
}
 
void solve() {
    cin >> n;
    ll res = 0;
    for(ll i = 1; i < N; i++) {
        ll x = bianshen(i);
        if(x <= n) res++;
    }
    cout << res << endl;
}
 
int main() {
    // multiple case
    // int t; scanf("%d", &t);
    // while(t--) {
    //     solve();
    // }
 
    // single case
    solve();
 
    return 0;
}

这段代码实现了一个简单的功能:计算小于等于n的加倍整数的个数。
代码中首先定义了常量N为1e6+10,并定义了变量n和函数bianshen(x)。函数bianshen(x)用于将x变为xx的加倍整数,即将x的字符串形式重复一次后再转为整数。
在主函数中,首先读入n的值,然后使用for循环遍历所有小于N的正整数i,计算i的加倍整数bianshen(i)。如果bianshen(i)小于等于n,则将计数器res加1。
最后输出res的值,即小于等于n的加倍整数的数量。
该代码使用了C++11的标准库,包括iostream、algorithm、queue、set、map、vector、string等头文件,以及using关键字定义了ll和pii等类型别名,方便了代码编写。代码的时间复杂度为O(NlogN),其中N为1e6,可通过本题。

个人题解

加倍整数指的是一个正整数,如果将它的最高位复制一次接在它的最低位之后,得到的新数是原数的两倍。例如,22是一个加倍整数,因为它的最高位是2,将2复制一次得到新数122,而122是22的两倍。
以下是一段C++代码,可用于判断一个正整数是否为加倍整数:


#include <iostream>
#include <cstring>
using namespace std;
bool isDouble(int n)
{
    bool flag = false;
    string str = to_string(n); // 将整数转为字符串
    int len = str.length();
    if (str[0] == str[len-1])  // 判断最高位和最低位是否相等
    {
        flag = true;
        for (int i = 1; i < len/2; i++)  // 判断其他位是否相等
        {
            if (str[i] != str[i+len/2])
            {
                flag = false;
                break;
            }
        }
    }
    return flag;
}
int main()
{
    int n;
    cout << "请输入一个正整数:";
    cin >> n;
    if (isDouble(n))
        cout << n << "是加倍整数。" << endl;
    else
        cout << n << "不是加倍整数。" << endl;
    return 0;
}

该代码首先将输入的正整数转换为字符串,然后判断最高位和最低位是否相等,如果相等再判断其他位是否相等,最后返回判断结果。

大学生特种兵

在这里插入图片描述

官方题解

假如有一段路程为 1−>2−>4−>5−>3,则他旅行的起点可以为其中的任意一个,终点为起点后的任意一个。故我们可以枚举起点,然后搜索他能够去到哪些终点。

#include <iostream>
#include <algorithm>
#include <vector>
#include <cstring>
 
using namespace std;
const int N = 2010;
int n, m, st[N];
vector<int> e[N];
 
// 任何dfs的u都可能为终点
void dfs(int u, int &sum) {
    st[u] = true;
    sum++;
    for(auto ne:e[u]) {
        if(st[ne]) continue;
        dfs(ne, sum);
    }
}
 
int main() {
    scanf("%d%d", &n, &m);
    for(int i=1; i<=m; i++) {
        int a, b;
        scanf("%d%d", &a, &b);
        e[a].push_back(b);
    }
    int res = 0;
    for(int i=1; i<=n; i++) {
        memset(st, 0, sizeof(st));
		// 这里的表示起点为i
        dfs(i, res);
    }
    printf("%d\n", res);
    return 0;
}

DFS

DFS(Depth First Search)即深度优先搜索,是一种常见的图遍历算法。在C++中,可以使用递归或栈来实现DFS算法。
具体实现方式如下:

  1. 递归
    递归实现DFS算法比较简单,代码如下:
const int N = 100010;
vector<int> g[N]; // 图的邻接表表示
bool vis[N]; // 记录每个节点是否被访问过
// 从节点u开始进行深度优先遍历
void dfs(int u) {
    vis[u] = true; // 标记节点u为已访问
    cout << u << " "; // 输出节点u
    for (auto v : g[u]) { // 遍历节点u的出边
        if (!vis[v]) { // 如果节点v未被访问过
            dfs(v); // 递归遍历节点v
        }
    }
}
int main() {
    int n, m;
    cin >> n >> m;
    for (int i = 0; i < m; i++) {
        int u, v;
        cin >> u >> v;
        g[u].push_back(v);
        g[v].push_back(u);
    }
    dfs(1); // 从节点1开始进行深度优先遍历
    return 0;
}

在这段代码中,dfs函数代表从节点u开始进行深度优先遍历。首先标记节点u为已访问,然后输出节点u,最后遍历节点u的所有出边。如果一个出边指向的节点v未被访问过,则递归调用dfs(v)进行遍历。
2. 栈
非递归实现DFS算法需要手动维护一个栈来存储节点信息,代码如下:

const int N = 100010;
vector<int> g[N]; // 图的邻接表表示
bool vis[N]; // 记录每个节点是否被访问过
// 从节点u开始进行深度优先遍历
void dfs(int u) {
    stack<int> stk; // 定义一个栈
    stk.push(u); // 将起始节点u入栈
    while (!stk.empty()) { // 当栈不为空时
        int t = stk.top();
        stk.pop();
        if (!vis[t]) { // 如果节点t未被访问过
            vis[t] = true; // 标记节点t为已访问
            cout << t << " "; // 输出节点t
            for (auto v : g[t]) { // 遍历节点t的出边
                if (!vis[v]) { // 如果节点v未被访问过
                    stk.push(v); // 将节点v入栈
                }
            }
        }
    }
}
int main() {
    int n, m;
    cin >> n >> m;
    for (int i = 0; i < m; i++) {
        int u, v;
        cin >> u >> v;
        g[u].push_back(v);
        g[v].push_back(u);
    }
    dfs(1); // 从节点1开始进行深度优先遍历
    return 0;
}

在这段代码中,dfs函数代表从节点u开始进行深度优先遍历。我们使用一个栈来存储节点信息,将起始节点u入栈。当栈不为空时,取出栈顶节点t。如果节点t未被访问过,则标记节点t为已访问,输出节点t,遍历节点t的所有出边,将出边指向的未访问节点v入栈。

总结一下,DFS算法是一种非常常用的图遍历算法,递归实现简单,但是当图过大时有可能导致栈溢出。因此,我们可以使用非递归方法,手动维护一个栈来实现DFS遍历。在使用DFS遍历图时,要注意记录每个节点是否被访问过,避免重复访问。

不许6

在这里插入图片描述

官方题解

a=[1,2,3,4,5,7,8,9,10,11,12,13,14,15,17,18,…]。从这里可以发现这个数字世界就是一个使用数字 0,1,2,3,4,5,7,8,9的九进制。故我们将获取到的数字从十进制转换为九进制即可,注意把转换后的 [6,8]变为 [7,9]。

#include <iostream>
#include <algorithm>
#include <vector>
 
using namespace std;
using ll = long long;
 
void solve() {
    ll k; scanf("%lld", &k);
    vector<ll> res;
    while(k) {
        res.push_back(k%9);
        k /= 9;
    }
    reverse(res.begin(), res.end());
    for(auto &x:res) {
        if(x >= 6) x++;
        printf("%lld", x);
    }
    puts("");
}
 
int main() {
    int t; scanf("%d", &t);
    while(t--) {
        solve();
    }
    return 0;
}

根据题目描述,1v7w的数字世界中没有数字6,因此我们需要将所有数字中的6去掉,生成新的数字序列。
具体代码实现如下:

#include <iostream>
#include <vector>
using namespace std;
vector<int> a;
void generate() {
    int x = 1;
    while (x <= 1000000) {
        if (x % 10 != 6 && x / 10 % 10 != 6) {
            a.push_back(x);
        }
        x++;
    }
}
int main() {
    generate();
    int k;
    cin >> k;
    if (k <= 0 || k > a.size()) {
        cout << "Error" << endl;
    } else {
        cout << a[k - 1] << endl;
    }
    return 0;
}

首先,我们定义一个vector a来存储符合要求的数字序列,然后编写generate函数来生成这个序列。generate函数使用一个while循环来遍历所有小于等于1000000的正整数,将没有6的数字加入到a中。

在主函数中,我们读入一个整数k,判断其是否在a的下标范围之内。如果在范围之内,则输出a[k-1],即第k个符合要求的数字;否则输出"Error"。

该程序的时间复杂度是O(n),其中n是符合要求的数字个数,即小于等于1000000的去掉了含有数字6的数字个数,可以通过本题。

vector

在C++中,vector是一个非常常用的动态数组容器,它可以在运行时动态扩展大小,并且支持随机访问、在尾部添加元素、在尾部删除元素等操作。在使用vector时,需要包含头文件。
vector的定义方式如下:

vector<int> v; // 定义一个空的vector容器
vector<int> v(n); // 定义一个有n个元素的vector容器,每个元素都是0
vector<int> v(n, m); // 定义一个有n个元素的vector容器,每个元素都是m

其中,n表示vector容器的大小,m表示初始值。可以通过v.size()来获取vector容器的大小,通过v[i]来访问第i个元素。
vector的常用操作如下:

  1. 在尾部添加元素
vector<int> v;
v.push_back(1); // 在尾部添加元素1
v.push_back(2); // 在尾部添加元素2
  1. 在尾部删除元素
vector<int> v = {1, 2, 3};
v.pop_back(); // 删除尾部元素3
v.pop_back(); // 删除尾部元素2
  1. 随机访问元素
vector<int> v = {1, 2, 3};
cout << v[0] << endl; // 输出第一个元素1
cout << v[1] << endl; // 输出第二个元素2
cout << v[2] << endl; // 输出第三个元素3
  1. 清空vector
vector<int> v = {1, 2, 3};
v.clear(); // 清空vector
  1. 遍历vector
vector<int> v = {1, 2, 3};
for (int i = 0; i < v.size(); i++) {
    cout << v[i] << " ";
}
cout << endl;
  1. 插入元素
vector<int> v = {1, 2, 3};
v.insert(v.begin() + 1, 4); // 在第二个位置插入元素4
for (int i = 0; i < v.size(); i++) {
    cout << v[i] << " ";
}
cout << endl;

以上是vector容器的常用操作,vector还支持很多其他的操作,如排序、查找、删除等,具体可以参考C++的官方文档。需要注意的是,当vector的元素个数超过当前容量时,vector会重新分配一个更大的内存块,并将原有元素复制到新内存块中,这可能导致性能问题。因此,在使用vector时,可以通过调用reserve函数来预分配容量,避免频繁的内存分配复制。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

修罗论坛xiuno源码在线搭建

Xiuno BBS 是一款小巧、稳定、支持在大数据量下仍然保持高负载能力的轻论坛。它只有 20 多个表&#xff0c;源代码压缩后 1M 左右&#xff0c;运行速度非常快&#xff0c;处理单次请求在 0.01 秒级别&#xff0c;在有 APC、Yac、XCache 的环境下可以跑到 0.00x 秒&#xff0c;对…

基于物联网设计的酒驾检测系统(STM32+OneNet)

一、 设计说明 随着社会的发展和人们生活水平的提高,汽车已经成为人们出行的主要代步工具,与此同时,酒后驾车所引发的事故越来越多,对人们的生命安全带来了威胁。为了减少酒后驾车造成危险事故,本文设计了一款能够安装在车辆控制系统上的酒驾监测系统。 本系统主控芯片采…

TOGAF10®标准中文版--(阶段A — 架构愿景)方法

3.5.1 概述 阶段 A 从收到发起组织向架构组织发出的架构工作请求开始。 在TOGAF 标准 —EA能力和治理中讨论了确保公司管理层的适当认可和确认&#xff0c;以及直线管理层的支持和承诺所涉及的问题。 A阶段还定义了架构工作的范围内和范围外的内容以及必须处理的约束条件。在…

给httprunnermanager接口自动化测试平台加点功能(六)

文章目录 一、背景1.1、先看用例编辑/新增页面1.2、效果展示 二、思考三、总结 一、背景 这一讲&#xff0c;是想给维护用例信息留个缺口&#xff0c;咱们知道这个平台是基于httprunner框架开发的&#xff0c;那么在用例结构处可以发现&#xff0c;skip这个关键字&#xff0c;经…

我的创作纪念日_周年复盘

本文框架 前言机缘收获日常憧憬 前言 不知不觉又是一个特殊的纪念日&#xff0c;虽然工作很卷&#xff0c;生活很累&#xff0c;但也能在一次次文章发布及与读者的互动交流中不断充实自己&#xff0c;对于写文章也越来越成为自己的一个习惯&#xff0c;甚至一周不更都会生活感…

嵌入式软件测试笔记6 | 嵌入式软件测试中独立测试团队需要做哪些测试活动?

6 | 嵌入式软件测试中独立测试团队需要做哪些测试活动&#xff1f; 1 简介2 计划与控制阶段2.1 分配任务2.2 整体评审和研究2.3 建立测试基础2.4 确定测试策略2.5 设置组织2.6 列出测试交付清单2.7 指定基础设施2.8 组织管理和控制2.9 编制测试过程进度表2.10 整理测试计划2.11…

(UE4/UE5)Unreal Engine中使用HLOD

本教程将详细介绍在Unreal Engine的不同版本&#xff08;4.20-4.24、4.25-4.26、5.2&#xff09;中如何使用Hierarchical Level of Detail (HLOD)。注意&#xff0c;每个版本中使用HLOD的方法可能会有所不同。 一、预先生成LOD 步骤一&#xff1a;预先生成LOD打开UE4.21&…

深入理解cache对写好代码至关重要

CACHE的一致性 Cache的一致性有这么几个层面 1. 一个CPU的icache和dcache的同步问题 2. 多个CPU各自的cache同步问题 3. CPU与设备&#xff08;其实也可能是个异构处理器&#xff0c;不过在Linux运行的CPU眼里&#xff0c;都是设备&#xff0c;都是DMA&#xff09;的cache同…

商场开盲盒小程序软件

以下是商场开盲盒小程序软件可能具有的界面&#xff1a; 首页&#xff1a;展示热门盲盒产品、促销信息和优惠券等内容&#xff0c;提供快捷购物入口和搜索功能。 盲盒专柜或零售店铺列表&#xff1a;列出商场内所有盲盒专柜或零售店铺的地址和电话号码&#xff0c;帮助…

Typescript 中,这些类型工具真好用

你是否曾经用 TypeScript 写代码&#xff0c;然后意识到这个包没有导出我需要的类型&#xff0c;例如下面这段代码提示 Content 在 example 中不存在&#xff1a; import {getContent, Content} from example const content await getContent() function processContent(conte…

8.2 电压比较器(1)

电压比较器是对输入信号进行鉴幅与比较的电路&#xff0c;是组成非正弦波发生电路的基本单元电路&#xff0c;在测量和控制中有着相当广泛的应用。 一、概述 1、电压比较器的电压传输特性 电压比较器的输出电压 u O u_{\scriptscriptstyle O} uO​ 与输入电压 u I u_{\scr…

软件测试面试一周时间面了6家公司,最终收割3个Offer

上个月花了一周时间面了6家公司&#xff0c;最终收割3个Offer。通过这6次面试&#xff0c;得到的最宝贵的经验是&#xff1a;快刀斩乱麻。展开说就是&#xff1a;给自己一点点压力&#xff0c;在短时间内迅速面试、迅速反馈、迅速提高&#xff0c;然后迅速进入下一场面试。 以…

一文理清最小二乘法估计

1 最小二乘法估计(LS) 1.1 原理与推导 最小二乘法最早是高斯在预估星体轨道时提出来的&#xff0c;后来成为了估计理论的奠基石。考虑如下CAR模型&#xff1a; 其中&#xff1a; 参数估计的任务就是根据输入和输出&#xff0c;估计出a1,a2,----,ana,b1,b2,...,bnb这nanb1个参…

【MySQL数据库】MySQL日志管理、备份与恢复

MySQL日志管理、备份与恢复 一、MySQL日志管理1.1日志存放位置 二、数据备份2.1物理备份与逻辑备份2.2完整备份、差异备份、增量备份2.3常见的备份方法 三、完整备份与恢复3.1物理冷备份与恢复3.2mysqldump 备份3.3mysqldump数据恢复3.4MySQL增量备份3.5MySQL增量恢复 一、MySQ…

51单片机 - 期末复习重要图

AT89S51片内硬件结构 1.内部硬件结构图 2.内部部件简单介绍 3. 26个特殊功能寄存器分类 按照定时器、串口、通用I/O口和CPU 中断相关寄存器&#xff1a;3IE - 中断使能寄存器IP - 中断优先级寄存器 定时器相关寄存器6TCON - 定时器/计数器控制寄存器TMOD - 定时器/计数器模…

数字图像处理(三)

目录 实验六、图像分割方法 实验七、图像识别与分类 实验六、图像分割方法 一、实验目的 了解图像分割技术相关基础知识&#xff1b;掌握几种经典边缘检测算子的基本原理、实现步骤理解阈值分割、区域分割等的基本原理、实现步骤。理解分水岭分割方法的基本原理、实现方法。…

清华大学实验室走在科研管理前沿,与Zoho合作推进新模式

在教育科研工作中&#xff0c;在重视科研的同时&#xff0c;也不能忽略科研管理的重要性。做好教育科研的管理工作&#xff0c;可以有效提高科研工作的效率和质量。项目管理软件可以帮助教育科研团队更加高效地管理项目&#xff0c;并且简化团队成员之间的协作和沟通&#xff0…

【玩转Docker小鲸鱼叭】理解Docker的核心概念

Docker核心概念 Docker有三大核心概念&#xff1a;镜像&#xff08;Image&#xff09;、容器&#xff08;Container&#xff09;、仓库&#xff08;Repository&#xff09; 1、镜像&#xff08;Image&#xff09; Docker镜像 是我们创建和运行Docker容器的基础&#xff0c;它…

青大数据结构【2019】【三分析计算】

关键字: 邻接表时间复杂度、哈希表、平均查找长度ASL、堆排序 邻接表表示法 在邻接表上执行图的遍历操作时,需要对邻接表中所有的边(链表中的结点)访问一次,还需要对所有的顶点访问一次,故时间代价为O(n+2)。 1) 散列序号 0 1 2 3 4 5 6 7 元素 19 15 8 5 13 20

奉加微电子PhyPlusKit软件怎么使用

摘要&#xff1a;本文简介使用奉加微电子PhyPlusKit软件清除芯片、制作hexf文件、烧录程序、串口调试等操作方法。 所用硬件&#xff1a; PHY6222开发板&#xff0c;这个开发板上自带了CP210X串口芯片&#xff0c;与电脑的接口的type-c&#xff0c;既可以供电&#xff0c;又可…