第34次csp

矩阵重塑(其一)

刷新 

时间限制: 1.0 秒

空间限制: 512 MiB

相关文件: 题目目录(样例文件)

题目背景

矩阵(二维)的重塑(reshape)操作是指改变矩阵的行数和列数,同时保持矩阵中元素的总数不变。

题目描述

矩阵的重塑操作可以具体定义为以下步骤:

设原矩阵为 MM,其维度为 n×mn×m,即有 nn 行和 mm 列。新矩阵为 M′M′,其维度为 p×qp×q。重塑操作要满足 n×m=p×qn×m=p×q,这保证了元素的总数不变。

  1. 线性化原矩阵:按照行优先的顺序,将原矩阵 MM 的元素转换成一个长度为 n×mn×m 的一维数组 AA。这意味着你先读取 MM 的第 00 行元素,然后是第 11 行,依此类推,直到最后一行。

  2. 填充新矩阵:使用一维数组 AA 中的元素按照行优先的顺序填充新矩阵 M′M′。首先填充 M′M′ 的第 00 行,直到该行有 qq 个元素,然后继续填充第 11 行,直到所有 pp 行都被填满。

给定原矩阵中的一个元素的位置 (i,j)(i,j)(0≤i<n0≤i<n 且 0≤j<m0≤j<m),我们可以找到这个元素在被线性化后的一维数组 AA 中的位置 kk(0≤k<n×m0≤k<n×m),然后确定它在新矩阵 M′M′ 中的位置 (i′,j′)(i′,j′)(0≤i′<p0≤i′<p 且 0≤j<q0≤j<q)。它们之间满足如下数学关系:i×m+j=k=i′×q+j′i×m+j=k=i′×q+j′

给定 n×mn×m 的矩阵 MM 和目标形状 pp、qq,试将 MM 重塑为 p×qp×q 的矩阵 M′M′。

输入格式

从标准输入读入数据。

输入共 n+1n+1 行。

输入的第一行包含四个正整数 nn、mm 和 pp、qq。

接下来依次输入原矩阵 MM 的第 00 到第 n−1n−1 行,每行包含 mm 个整数,按列下标从 00 到 m−1m−1 的顺序依次给出。

输出格式

输出到标准输出。

输出共 pp 行,每行 qq 个整数,表示重塑后的矩阵 M′M′。输出格式与输入相同,即依次输出 M′M′ 的第 00 行到第 p−1p−1 行;行内按列下标从 00 到 q−1q−1 的顺序输出,且两个整数间仅用一个空格分隔。

样例1输入

2 3 3 2
1 2 3
4 5 6

样例1输出

1 2
3 4
5 6

样例2输入

2 2 1 4
6 6
6 6

样例2输出

6 6 6 6

子任务

全部的测试数据满足:

  • nn、mm 和 pp、qq 均为正整数且 n×m=p×q≤104n×m=p×q≤104;

  • 输入矩阵中每个元素的绝对值不超过 10001000。

提示

评测环境仅提供各语言的标准库,特别地,不提供任何线性代数库(如 numpypytorch 等)。

方法1
#include <bits/stdc++.h>
using namespace std;
const int N=10010;
int a[N][N],b[N][N],k[N*N];
int main()
{int n,m,p,q;cin>>n>>m>>p>>q;int t=0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){cin>>a[i][j];k[t++]=a[i][j];}}t=0;for(int i=0;i<p;i++){for(int j=0;j<q;j++){b[i][j]=k[t++];}}for(int i=0;i<p;i++){for(int j=0;j<q;j++){cout<<b[i][j]<<" ";}cout<<endl;}}
#include <bits/stdc++.h>
using namespace std;
const int N=10010;
int a[N][N],b[N][N];map<int,int>k;int main()
{int n,m,p,q;cin>>n>>m>>p>>q;int t=0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){cin>>k[i*m+j];}}for(int i=0;i<p;i++){for(int j=0;j<q;j++){a[i][j]=k[i*q+j];}}for(int i=0;i<p;i++){for(int j=0;j<q;j++){cout<<a[i][j]<<" ";}cout<<endl;}}

矩阵重塑(其二)

刷新 

时间限制: 1.0 秒

空间限制: 512 MiB

相关文件: 题目目录(样例文件)

题目背景

矩阵转置操作是将矩阵的行和列交换的过程。在转置过程中,原矩阵 AA 的元素 aijaij​ 会移动到转置后的矩阵 ATAT 的 ajiaji​ 的位置。这意味着 AA 的第 ii 行第 jj 列的元素在 ATAT 中成为了第 jj 行第 ii 列的元素。

例如,有矩阵 AA 如下:

A=[abcdef]A=[ad​be​cf​]

它的转置矩阵 ATAT 会是:

AT=[adbecf]AT=​abc​def​​

矩阵转置在线性代数中是一个基本操作,广泛应用于各种数学和工程领域。

题目描述

给定 n×mn×m 的矩阵 MM,试编写程序支持以下查询和操作:

  1. 重塑操作 pp、qq:将当前矩阵重塑为 p×qp×q 的形状(重塑的具体定义见上一题);

  2. 转置操作:将当前矩阵转置;

  3. 元素查询 ii、jj:查询当前矩阵第 ii 行 jj 列的元素(0≤i<n0≤i<n 且 0≤j<m0≤j<m)。

依次给出 tt 个上述查询或操作,计算其中每个查询的结果。

输入格式

从标准输入读入数据。

输入共 n+t+1n+t+1 行。

输入的第一行包含三个正整数 nn、mm 和 tt。

接下来依次输入初始矩阵 MM 的第 00 到第 n−1n−1 行,每行包含 mm 个整数,按列下标从 00 到 m−1m−1 的顺序依次给出。

接下来输入 tt 行,每行包含形如 op a b 的三个整数,依次给出每个查询或操作。具体输入格式如下:

  • 重塑操作:1 p q

  • 转置操作:2 0 0

  • 元素查询:3 i j

输出格式

输出到标准输出。

每个查询操作输出一行,仅包含一个整数表示查询结果。

样例1输入

3 2 3
1 2
3 4
5 6
3 0 1
1 2 3
3 1 2

样例1输出

2
6

样例2输入

3 2 5
1 2
3 4
5 6
3 1 0
2 0 0
3 1 0
1 3 2
3 1 0

样例2输出

3
2
5

初始矩阵: [123456]​135​246​​, (1,0)(1,0) 位置元素为 33;

转置后: [135246][12​34​56​], (1,0)(1,0) 位置元素为 22;

重塑后: [135246]​154​326​​, (1,0)(1,0) 位置元素为 55。

子任务

8080 的测试数据满足:

  • t≤100t≤100;

全部的测试数据满足:

  • t≤105t≤105 且其中转置操作的次数不超过 100100;

  • nn、mm 和所有重塑操作中的 pp、qq 均为正整数且 n×m=p×q≤104n×m=p×q≤104;

  • 输入矩阵中每个元素的绝对值不超过 10001000。

提示

  • 对于 n×mn×m 的矩阵,虽然转置和重塑操作都可以将矩阵形态变为 m×nm×n,但这两种操作通常会导致不同的结果。

  • 评测环境仅提供各语言的标准库,特别地,不提供任何线性代数库(如 numpypytorch 等)。

#include <iostream>
using namespace std;
const int N=10010;
int a[N][N],b[N][N],c[N][N],k[N*N];
int main()
{int n,m,q;cin>>n>>m>>q;int t=0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){cin>>a[i][j];k[t++]=a[i][j];}}int x1=n,y1=m;while(q--){int op,x,y;cin>>op>>x>>y;if(op==1){ t=0;x1=x,y1=y;for(int i=0;i<x1;i++){for(int j=0;j<y1;j++){a[i][j]=k[t++];}}		}else if(op==2){t=0;for(int i=0;i<x1;i++){for(int j=0;j<y1;j++){b[j][i]=a[i][j];}}for(int i=0;i<y1;i++){for(int j=0;j<x1;j++){a[i][j]=b[i][j];k[t++]=a[i][j];}}swap(x1,y1);	}else cout<<a[x][y]<<endl;   }
}

#include <bits/stdc++.h>
using namespace std;
const int N=1010;
int a[N*N],b[N][N],c[N][N],k[N*N];
int main()
{int n,m,q;cin>>n>>m>>q;int t=0;for(int i=0;i<n;i++){for(int j=0;j<m;j++){cin>>k[t++];}}int x1=n,y1=m;while(q--){int op,x,y;cin>>op>>x>>y;if(op==1){ x1=x,y1=y;}else if(op==2){for(int i=0,cnt=0;i<t;i++,cnt++){a[(cnt%y1)*x1+(cnt/y1)]=k[cnt];}for(int i=0;i<t;i++){k[i]=a[i];}swap(x1,y1);}else cout<<k[x*y1+y]<<endl;}
}

文本分词

刷新 

时间限制: 1.5 秒

空间限制: 512 MiB

相关文件: 题目目录(样例文件)

题目背景

西西艾弗岛大数据中心正在如火如荼地开展大语言模型的研究工作。众所周知,计算机在执行机器学习的任务时,更适合处理数字的数据。对于大语言文本的处理, 最好的方式是将文本转化为数字,然后再进行处理。通常,对输入数据进行整理后,需要将其按照一定的规则进行编码,以便计算机能够更好地处理。

这一转换过程是通过词汇表进行的。词汇表是一个包含了所有可能出现的词的列表。对于一个给定的文本,可以按照该表格将文本转化为一个数字的序列。 而词表也需要根据文本的特点进行设计,以便更好地反映文本的特点。

题目描述

词汇表包括一系列的字符串,可以用于将输入的文本转换为数字序列。这里,我们认为输入文本事先经过一定的处理,将字母统一转换为了小写字母。词汇表的生成过程是一个迭代的过程。首先将文本按照一定的规则切分为单词序列, 并统计全部单词的出现频率。然后将单词拆分为单字母字符串,组成初始的词汇表。接下来根据词汇表中的词汇接连出现在单词中的频率,将词汇反复合并,组成更长的词汇加入到词汇表中。 词汇表的具体生成过程如下:

首先,输入文本中所有的单词和其出现的频率。然后,统计其中所有的字符,将其按照字典序排序,并将这些字符作为单字母字符串加入到词汇表中。同时,将输入的单词相应切分为词汇序列。

例如,输入下列词组和频率:

cut 15
cute 10
but 6
execute 3

则执行完上述过程后,词汇表中包含了 bcetux 这些单字母字符串,而输入的词组被切分为:

c u t 15
c u t e 10
b u t 6
e x e c u t e 3

接下来,统计词汇表中,两个词汇组成的“词汇对”相连出现的频率,并选取出现次数最多的那一组拼接为一个字符串加入词汇表中。如果存在多个这样的“词汇对”,则再按照如下优先级顺序选取:

  • 选取拼接后的字符串长度最短的那一组;
  • 选取“词汇对”中前一个词汇长度最短的那一组;
  • 选取拼接后的字符串字典序最小的那一组。

同时生成对应的合并规则(即将选出的“词汇对”合并成一个词汇),并按照该规则将所有输入单词的词汇序列按从前到后的顺序依次加以合并。

例如,在上述单词列表中词汇组合 <c, u> 在单词 cut 、 cute 和 execute 中分别出现了 15、10 和 3 次。相应统计全部的“词汇对”出现次数如下:

c u 28
u t 34
t e 13
b u 6
e x 3
x e 3
e c 3

于是,将 ut 加入词汇表中,并生成合并规则 <u, t>,可得到词汇表 bcetuxut。同时,将输入的单词切分为:

c ut 15
c ut e 10
b ut 6
e x e c ut e 3

上述过程可以重复进行。例如,继续统计“词汇对”出现的频率如下:

c ut 28
ut e 13
b ut 6
e x 3
x e 3
e c 3

这时,将 cut 加入词汇表中,并生成合并规则 <c, ut>,可得到词汇表 bcetuxutcut。同时,将输入的单词切分为:

cut 15
cut e 10
b ut 6
e x e cut e 3

词汇表的生成,需要重复进行上述过程,直到词汇表达到指定的长度,或者所有输入的单词都被合并为一个词汇。

此外需要注意,一种特殊情况是选取的“词汇对”由两个相同的词汇组成。例如按“词汇对”<a, a> 进行合并时,由于从前到后的顺序要求,序列 a a a 会被合并为 aa a,而序列 a a a a 则会被合并为 aa aa

输入格式

从标准输入读入数据。

输入的第一行包含两个正整数,nn 和 mm,分别表示输入的单词的数量和期望的词汇表长度。

接下来的 nn 行,每行包含一个非空字符串 ss 和一个正整数 ff,表示输入的单词和其出现的频率。其中,ss 中只包含小写字母。

输出格式

输出共 mm 行,每行包含一个字符串,按照加入词汇表的顺序输出词汇表中所有词汇。

样例1输入

4 8
cut 15
cute 10
but 6
execute 3

样例1输出

b
c
e
t
u
x
ut
cut

样例1解释

该样例即为题目描述中所举的例子。

子任务

对 20% 的数据,有 n≤200n≤200,mm 恰好等于输入单词中出现的所有字母的个数。

对 40% 的数据,有 n≤200n≤200,m≤200m≤200。

对 80% 的数据,有 n≤2000n≤2000,m≤2500m≤2500。

对 100% 的数据,有 n≤10000n≤10000,m≤5000m≤5000 且大于等于输入单词中出现的所有字母的个数,ss 的长度 ∣s∣≤25∣s∣≤25,输入单词的总频率(ff 的总和)不超过 106106。文本取材于真实的英文著作。

#include <bits/stdc++.h>
using namespace std;const int N=205;
map<char,int>mp;
int main()
{int n,m;cin>>n>>m;while(n--){string s;int f;cin>>s>>f;for(int i=0;i<s.size();i++){mp[s[i]]++;}}for(auto &t:mp){cout<<t.first<<endl;}
}//能力有限,只会20分,希望有大佬可以给我看满分代码

货物调度

刷新 

时间限制: 2.0 秒

空间限制: 512 MiB

相关文件: 题目目录(样例文件)

题目描述

西西艾弗岛上共有 nn 间物流仓库,小 P 目前有 mm 件货物存放其中。为了获得至少为 vv 的现金,小 PP 需要选取一些货物卖出。

已知货物信息如下,第 ii 件(0≤i<m0≤i<m)货物:

  • 存放在第 titi​ 间仓库中(0≤ti<n0≤ti​<n);

  • 价值为 aiai​,即选择卖出该货物可获得 aiai​ 的现金。

但在调货出库时也需要支付一些费用,对于第 jj 间(0≤j<n0≤j<n)仓库:

  • 只要调用了该仓库的货物(至少一件),就需要支付 bjbj​ 的基本费用

  • 如果调用了该仓库中共 kk 件货物,则还需要支付 k×cjk×cj​ 的计件费用

小 P 的最终目标是获得至少为 vv 的现金,即要求卖出的货物总价值减去总费用的结果大于或等于 vv。 在满足该目标的前提下,试为小 PP 规划一种花费最小的卖货方案。

输入格式

从标准输入读入数据。

输入的第一行包含三个正整数 nn、mm 和 vv。

接下来 nn 行输入仓库信息,其中第 jj 行(0≤j<n0≤j<n)包含两个整数 bjbj​ 和 cjcj​。

接下来 mm 行输入货物信息,其中第 ii 行(0≤i<m0≤i<m)包含两个整数 aiai​ 和 titi​。

输出格式

输出到标准输出。

仅输出一个整数,表示完成目标前提下的最小花费。

样例1输入

2 3 15
2 1
3 2
10 0
20 1
15 0

样例1输出

4

样例1解释

最优方案:选取货物 00 和 22,二者均在 00 号仓库,总花费为 2+2×1=42+2×1=4。

选取货物 11 也刚好能满足要求(20−3−1×2≥1520−3−1×2≥15),但花费更多。

单独选取货物 00 或 22 均不能满足要求。

样例2输入

5 3 15
2 1
1 1
3 2
4 2
1 5
10 1
10 1
10 1

样例2输出

3

样例2解释

小 P 所有货物均存放在仓库 11 中,任取两件货物卖出即可满足要求(10+10−1−2×1≥1510+10−1−2×1≥15)。

子任务

30%30% 的数据满足:

  • m≤15m≤15

另有 40%40% 的数据满足:

  • ai≤20ai​≤20

全部的数据满足:

  • 0<n,m≤10000<n,m≤1000

  • 0<bj,cj≤200<bj​,cj​≤20

  • 0<ai≤10000<ai​≤1000

  • 0<v≤1060<v≤106 且保证至少存在一种可满足要求的卖货方案。

不会,希望大佬们教教
 

哥德尔机

刷新 

 关于本题测试数据的说明
由于认证现场数据强度较弱,本题在原有20组测试数据基础上提供了4组加强数据(其中第21, 22组满足第4个子任务的特殊性质;第23, 24组满足第6个子任务的性质),每组测试数据仍对应5分。 通过原有的20组数据即可在本题获得100分,我们欢迎有能力的同学挑战加强数据。

时间限制: 5.0 秒

空间限制: 1024 MiB

相关文件: 题目目录(样例文件)

题目背景

ReLU 函数是机器学习中常用的一个激活函数,其定义为:ReLU(x)=max⁡(0,x)ReLU(x)=max(0,x)。

题目描述

在西西艾弗岛上有一台基于哥德尔机原理设计的通用人工智能机器,小 C 是负责维修这台机器的机器人。

有一天小 C 发现这个机器在一个算法部分上遇到了计算瓶颈,这个算法是这样的:

机器内部维护了一个神经网络,这个神经网络的权重是一个二维矩阵 VV,并且权重是一个整数。

即对于每个二维坐标 (x,y)(x,y),矩阵在该位置的权重是 V(x,y)V(x,y),初始权重为 00。

神经网络会进行 nn 轮学习操作,每轮学习会给出参数 x1,x2,y1,y2,vx1​,x2​,y1​,y2​,v,然后对每个满足 x1≤x≤x2;y1≤y≤y2x1​≤x≤x2​;y1​≤y≤y2​ 的 (x,y)(x,y),将该位置对应的神经网络权重 V(x,y)V(x,y) 修改为 v+ReLU(V(x,y)−v)v+ReLU(V(x,y)−v);

在所有学习操作之后,神经网络的参数定下来不变了,紧接着有 mm 次神经网络推理操作,每次推理操作给出 x1,x2,y1,y2x1​,x2​,y1​,y2​,查询对应子矩阵范围内最大的神经网络权重,即 max⁡x1≤x≤x2y1≤y≤y2V(x,y)x1​≤x≤x2​y1​≤y≤y2​​max​V(x,y)。

小 C 发现机器在枚举这个问题优秀的算法时卡住了,目前只枚举出了一个很暴力的算法,为了让机器可以快点启动,他决定自己写好这个问题的算法来降低其启动常数,你能帮帮他吗?

输入格式

从标准输入读入数据。

输入的第一行包含两个整数 n,mn,m;

接下来 nn 行每行五个整数 x1,x2,y1,y2,vx1​,x2​,y1​,y2​,v,依次表示每次学习操作的参数;

接下来 mm 行每行四个整数 x1,x2,y1,y2x1​,x2​,y1​,y2​,依次表示每次推理操作的参数。

输出格式

输出到标准输出。

共 mm 行,依次表示每次查询操作的答案。

样例1输入

5 5
1 3 2 3 3
4 5 2 5 1
3 5 1 2 1
2 5 3 4 4
1 4 3 4 2
1 5 2 5
1 5 2 5
1 5 1 5
1 4 1 5
2 5 1 3

样例1输出

4
4
4
4
4

样例2输入

10 10
3 10 7 7 10
1 10 9 9 3
4 6 7 7 7
1 8 5 5 1
6 8 1 1 1
1 3 8 8 2
2 10 10 10 9
1 10 6 6 4
1 8 9 9 4
5 9 9 9 2
1 9 2 2
2 10 1 10
2 10 6 9
2 2 1 4
2 10 8 10
7 10 1 10
1 8 1 9
1 8 5 7
3 7 5 8
2 10 1 7

样例2输出

0
10
10
0
9
10
10
10
10
10

子任务

对于 10%10% 的数据,满足 1≤n,m≤1001≤n,m≤100。

对于另外 10%10% 的数据,满足 1≤n,m≤1031≤n,m≤103。

对于另外 20%20% 的数据,满足 1≤n,m≤1041≤n,m≤104。

对于另外 20%20% 的数据,满足 1≤n,m≤5×1041≤n,m≤5×104。

对于另外 10%10% 的数据,满足 1≤n≤1031≤n≤103。

对于 100%100% 的数据,满足 1≤n,m≤5×1051≤n,m≤5×105,对每个修改或查询操作,满足 1≤x1≤x2≤n1≤x1​≤x2​≤n,1≤y1≤y2≤n1≤y1​≤y2​≤n 对每个修改操作,满足 1≤v≤n1≤v≤n,所有数值为整数。

只会暴力
 

#include <bits/stdc++.h>
using namespace std;
const int N=1e4+10;
int a[N][N];
int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int n,m;cin>>n>>m;while(n--){int x1,x2,y1,y2,v;cin>>x1>>x2>>y1>>y2>>v;for(int i=x1;i<=x2;i++){for(int j=y1;j<=y2;j++){a[i][j]=v+max(0,a[i][j]-v);}}}while(m--){int mx=-0x3f3f3f3f;int x1,x2,y1,y2;cin>>x1>>x2>>y1>>y2;for(int i=x1;i<=x2;i++){for(int j=y1;j<=y2;j++){mx=max(mx,a[i][j]);}}cout<<mx<<endl;}
}

希望佬们教教我

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

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

相关文章

大厂程序员的健身之路

大厂程序员的健身之路 基本信息饮食正餐营养补剂 睡眠训练计划 基本信息 健身时间&#xff1a;2023.03 -> 2024.09体重变化&#xff1a;52kg -> 67kg 饮食 正餐 早餐&#xff1a;不吃午餐&#xff1a;两碗米饭 鱼/鸡肉 蔬菜 酸奶晚餐&#xff1a;两碗米饭 鱼/鸡肉…

简单题35-搜索插入位置(Java and Python)20240919

问题描述&#xff1a; Java&#xff1a; class Solution {public int searchInsert(int[] nums, int target) {int k 0;int i 0;while(i<nums.length){if(nums[i]target){return i;}if(nums[i]<target){k i1;}i;}return k;}}class Solution(object):def searchInsert(…

6.C_数据结构_查询_哈希表

概述 哈希表的查询是通过计算的方式获取数据的地址&#xff0c;而不是依次比较。在哈希表中&#xff0c;有一个键值key&#xff0c;通过一些函数转换为哈希表的索引值。 其中&#xff1a;这个函数被称为哈希函数、散列函数、杂凑函数&#xff0c;记为&#xff1a;H(key) 哈希…

NFT Insider #148:The Sandbox 推出 SHIBUYA Y3K 时尚系列,Azuki 进军动漫 NFT 领域

市场数据 加密艺术及收藏品新闻 Infinex 新推 NFT 系列首四日销售额破4000万美元 尽管顶级 NFT 系列表现不佳&#xff0c;Infinex 的最新 NFT 系列在首四日内销售额已超过 4000 万美元。Infinex 是一个非托管平台&#xff0c;提供轻松访问链上协议和 dApp。 Infinex Core 的…

189 轮转数组

解题思路&#xff1a; \qquad 首先要理解轮转的含义&#xff0c;轮转 将数组末尾元素移动至首位。轮转k不为负数&#xff0c;那如果k大于数组长度时会发生什么&#xff1f;定义n为数组长度&#xff0c;当k n时&#xff0c;数组元素的顺序又恢复成初始状态&#xff0c;下一次…

翻唱技巧:AU和Cubase翻唱录制对轨技巧

分享和记录一下个人翻唱的经验和技巧&#xff01;防止后续自己忘了&#xff01;同时如果有大佬看到&#xff0c;希望可以帮我指出其中的错误&#xff01;个人推荐用Cubase12录制翻唱&#xff0c;因为Cubase12可以做乐段的标记&#xff0c;翻唱时有助于学习一些歌曲的层次设计。…

opengl-redbook环境搭建(静态库)

所需库下载 gl3w(github地址)https://github.com/skaslev/gl3w 使用python3执行根目录下的gen脚本&#xff0c;会生成头文件include文件夹和src下gl3w.c文件。 glfw(github地址)https://github.com/glfw/glfw 本文项目结构 本文如红宝书一致&#xff0c;将glfw和gl3w引入…

【C高级】有关shell脚本的一些练习

目录 1、写一个shell脚本&#xff0c;将以下内容放到脚本中&#xff1a; 2、写一个脚本&#xff0c;包含以下内容&#xff1a; 1、写一个shell脚本&#xff0c;将以下内容放到脚本中&#xff1a; 1、在家目录下创建目录文件&#xff0c;dir 2、dir下创建dir1和dir2 …

【JAVA入门】Day48 - 线程池

【JAVA入门】Day48 - 线程池 文章目录 【JAVA入门】Day48 - 线程池一、线程池的主要核心原理二、自定义线程池三、线程池的大小 我们之前写的代码都是&#xff0c;用到线程的时候再创建&#xff0c;用完之后线程也就消失了&#xff0c;实际上这是不对的&#xff0c;它会浪费计算…

网络流之最大流(EK 模板)

EK的时间复杂度是O( )。 EK 算法 和 dinic 算法的区别是 &#xff1a;EK是通过 bfs 找到一条增广流&#xff0c;然后累加&#xff0c;循环此步骤直到 bfs 找不到增广流&#xff1b;而 dinic 算法 是通过 bfs 分层找到一条增广流&#xff0c;然后通过 dfs 跑完 当前分层图中所…

基于SpringBoot的中小医院管理系统

系列文章目录 1.基于SSM的洗衣房管理系统原生微信小程序LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统LW参考示例 3.基于SpringBootVue的企业人事管理系统LW参考示例 4.基于SSM的高校实验室管理系统LW参考示例 5.基于SpringBoot的二手数码回收系统原生微信小程序LW参考示…

温故--javaproject

nginx反向代理和负载均衡 nginx 反向代理&#xff0c;就是将前端发送的动态请求由 nginx 转发到后端服务器 提高访问速度 因为nginx本身可以进行缓存&#xff0c;如果访问的同一接口&#xff0c;并且做了数据缓存&#xff0c;nginx就直接可把数据返回&#xff0c;不需要真正…

C++_21_模板

模板 简介&#xff1a; 一种用于实现通用编程的机制。 通过使用模板我们可以编写可复用的代码&#xff0c;可以适用于多种数据类型。 C模板的语法使用角括号 < > 来表示泛型类型&#xff0c;并使用关键字 template 来定义和声明模板 概念&#xff1a; c范式编程 特点&…

Telephony VOWIFI

1、VOWIFI框架 参考3GPP 23402文档, VOWIFI有如下相关架构设置。 1、S2a信任的WIFI热点 2、S2b非信任WIF热点 3、S2c直联核心WIF热点 目前使用比较多的为S2b非信任WIF热点。 2、EPDG建立过程 //Telephony Log IWLAN拨号 08-30 21:36:34.702857 1347 5131 D ConnectivityS…

基于YOLOv5的教室人数检测统计系统

基于YOLOv5的教室人数检测统计系统可以有效地用于监控教室内的学生数量&#xff0c;适用于多种应用场景&#xff0c;比如 自动考勤、安全监控或空间利用分析 以下是如何构建这样一个系统的概述&#xff0c;包括环境准备、数据集创建、模型训练以及如何处理不同类型的媒体输入…

排序----希尔排序

void ShellSort(int* a, int n) {int gap n;while (gap > 1){// 1保证最后一个gap一定是1// gap > 1时是预排序// gap 1时是插入排序gap gap / 3 1;for (size_t i 0; i < n - gap; i){int end i;int tmp a[end gap];while (end > 0){if (tmp < a[end]){…

Linux——K8s集群部署过程

&#xff11;、环境准备 &#xff08;1&#xff09;配置好网络ip和主机名 control: node1: node2: 配置ip 主机名的过程省略 配置一个简单的基于hosts文件的名称解析 [rootnode1 ~]# vim /etc/hosts // 文件中新增以下三行 192.168.110.10 control 192.168.110.11 node1 1…

【redis-01】redis基本数据类型和使用场景

redis系列整体栏目 内容链接地址【一】redis基本数据类型和使用场景https://zhenghuisheng.blog.csdn.net/article/details/142406325 redis基本数据类型和使用场景 一&#xff0c;redis基本数据类型和使用场景1&#xff0c;String数据类型2&#xff0c;Hash数据类型3&#xff…

mat工具的几个实用地方

背景 使用mat的过程中&#xff0c;有几个值得关注的注意点&#xff0c;可以帮助我们尽快查找到问题的答案 mat实用的注意点 一.打开直方图后排序&#xff0c;直观查看内存占用大小,如下图所示 二.查看某个对象实例的具体值&#xff0c;点击对象&#xff0c;点击List Object…

vulnhub靶场 DC-3

地址: https://download.vulnhub.com/dc/DC-3-2.zip 开启NAT模式 namp只扫到了一个端口 打开网页有一个登录的页面 目录扫描一下,可以找到一个 后台登录界面 看一下指纹信息 joomla cms 网上搜一下可以发现存在一个JoomScan工具 在kali上面安装一下 apt install joomscan …