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

第十三届蓝桥杯省赛Python大学B组复盘

目录

一、试题B:寻找整数

1、题目描述

2、我的想法

3、官方题解

4、另解

二、试题E:蜂巢

1、题目描述

2、我的想法

3、官方题解

三、试题F:消除游戏

1、题目描述

2、我的想法(AC掉58.3%,剩下全超时)

3、官方题解

四、试题G:全排列的价值

1、问题描述

2、我的想法(AC掉25%,剩下全超时)

3、官方题解

五、试题H:技能升级

1、题目描述

2、我的想法(AC掉40%,剩下全超时)

3、官方题解

六、试题I:最长不下降子序列

1、题目描述

2、我的想法

3、官方题解


一、试题B:寻找整数

1、题目描述

本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。

有一个不超过 10^17 的正整数 n,知道这个数除以 2 至 49 后的余数如下表所示,求这个正整数最小是多少。

运行限制

  • 最大运行时间:1s
  • 最大运行内存: 512M

2、我的想法

填空题用C++代码暴力判断,估计跑久一点也会有结果吧。但是!结果跑不出来。

3、官方题解

首先看出这是对 “中国剩余定理” 的考察,不过需要选出质数作为模数。

证明不用考虑非质数:

若x % a == b

对于非质数a,存在一个质数k,使得a == kt

x == am + b == k(tm) + b

x % k == b % k == b'

非质数的等式可以替换为质数的等式,故只需考虑质数

【中国剩余定理】

这里不探讨证明,更多证明内容见:中国剩余定理 - OI Wiki 

【求逆元yk】

  • Mk*yk % mk == 1 推出 Mk*yk + mk*_ == 1
  • 套用扩展欧几里得算法:yk, _ = exgcd(Mk, mk)

扩展欧几里得算法:

# 已知a, b求x, y,使得ax + by = gcd(a, b)
def exgcd(a, b):if b == 0: return 1, 0    #显然按照题目ax+by=1的限制,当b为0了,a和x只能是1了y, x = exgcd(b, a % b)     #bn+(a%b)m=gcd(a,b)=d,故返回的是n,mreturn x, y - a // b * x

证明拓展欧几里得算法:

(a,b) == (b,a % b)

存在 x 和 y 使得 ax + by == gcd(a, b) == d

存在 n 和 m 使得 bn + (a%b)m == d(因为 b 和 a%b 的最大公约数也是 d

有 bn + (a - a/b * b)m == am + b(n - a/b * m) == d

因此:

x == m

y == n - a/b * m

exgcd(b, a % b) 这一递归调用即求出 n 和 m,分别赋值给 y 和 x

补充:

  • 计算两个正整数的最大公因数有两个比较常用的方法:更相减损术和辗转相除法,其中辗转相除法也叫欧几里得算法:𝑔𝑐𝑑(𝑎,𝑏)=𝑔𝑐𝑑(𝑏,𝑎%𝑏)
  • 而扩展欧几里得算法是欧几里得算法的扩展(废话),广泛应用于 RSA 加密等领域。

    定理:若 a 和 b 为正整数,则存在整数 x, y 使得 gcd(a,b)=ax+by;

    换句话说 gcd(a,b) 可以表示为 a,b 的整系数线性组合,例如:gcd(6,14)=2,而2=(-2)*6+1*14。

  • 已知整数 a、b,扩展欧几里得算法可以在求得 a、b 的最大公约数的同时,能找到整数x、y(其中一个很可能是负数),使它们满足贝祖等式 ax+by=gcd(a,b)。有两个数 a,b,对它们进行辗转相除法,可得它们的最大公约数,然后,收集辗转相除法中产生的式子,倒回去,可以得到 ax+by=gcd(a,b) 的整数解

  • 欧几里德算法停止的状态是: a=gcd,b=0

  • 上面的思想是以递归定义的,因为 gcd 不断的递归求解一定会有个时候 b=0,所以递归可以结束。

  • 裴蜀定理 𝑎𝑥+𝑏𝑦=𝑔𝑐𝑑(𝑎,𝑏) 得名于法国数学家艾蒂安·裴蜀(也叫贝祖,音译问题),说明了对任何整数 𝑎、𝑏 和它们的最大公约数 𝑔𝑐𝑑(𝑎,𝑏),关于未知数 𝑥 和 𝑦 的线性二元一次不定方程(称为裴蜀等式):一定存在整数 𝑥, 𝑦,使 𝑎𝑥+𝑏𝑦=𝑔𝑐𝑑(𝑎,𝑏) 成立
  • 它的一个重要推论是:𝑎, 𝑏 互质的充要条件是存在整数 𝑥, 𝑦 使 𝑎𝑥+𝑏𝑦=1 。证明略去。

代码如下:

ps = {2:1,3:2,5:4,7:4,11:0,13:10,17:0,19:18,23:15,29:16,31:27,37:22,41:1,43:11,47:5}
# ax + by == gcd(a, b)
def exgcd(a, b):if b == 0: return 1, 0y, x = exgcd(b, a % b)return x, y - a // b * xM = 1
ans = 0
for k in ps: M *= k
for m, r in ps.items():Mi = M // mt, _ = exgcd(Mi, m) # t是Mi关于m的逆元ans += r * Mi * tprint(ans % M)

4、另解

解1:

import os
import sys# 请在此输入您的代码
dp = [(2,1),(3,2),(5,4),(7,4),(13,10),(19,18),(23,15),(29,16),(31,27),(37,22),(41,1),(47,5)]
lcm = 187
res = 187           #显然答案必定能整除11和17,故res是按11*17==187的倍数加
i = 0
while i < len(dp):if res % dp[i][0] == dp[i][1]:     #发现某一个187的倍数能“余”正确的数lcm *= dp[i][0]    #lcm就扩大为dp[i][0]位,这样res加上目前lcm就肯定能保持对应余数i += 1else:res += lcm
print(res)

这个模拟让我十分震惊,这个编程非常优秀。说明了一个事情,不了解题目对应算法的时候也可以解题,这时候你要尽量尝试用代码模拟一个可行的思路。(补充:这种查找为了加快时间,初步判断就必须加大步长)

解2:

s = 187
c = 0
# 该整数是187的倍数,且不能被2整除,既为奇数
for i in range(187, 10 ** 17, 374):  # 开始为187,既步长为374if i % 49 == 46 and i % 48 == 41 and i % 47 == 5 and i % 46 == 15 and i % 45 == 29:  # 因为需要哦的步长需要很大,所以选数量较大的数c += 1print(i)if c > 5:break
print(12590206409 - 5458460249)  # 7131746160
print(19721952569 - 12590206409)  # 7131746160  发现规律,开始满足条件的数是5458460249,以后的间隔是7131746160的倍数mod = [(2, 1), (3, 2), (4, 1), (5, 4), (6, 5), (7, 4), (8, 1), (9, 2), (10, 9),(11, 0), (12, 5), (13, 10), (14, 11), (15, 14), (16, 9), (17, 0), (18, 11), (19, 18),(20, 9), (21, 11), (22, 11), (23, 15), (24, 17), (25, 9), (26, 23), (27, 20), (28, 25), (29, 16),(30, 29), (31, 27), (32, 25), (33, 11), (34, 17), (35, 4), (36, 29), (37, 22), (38, 37), (39, 23),(40, 9), (41, 1), (42, 11), (43, 11), (44, 33), (45, 29), (46, 15), (47, 5), (48, 41),(49,46)]for i in tqdm(range(5458460249, 10 ** 17, 7131746160)):  # 开始位置是5458460249 步长为7131746160for a, b in mod:if i % a != b:breakelse:print(i)  # for else结构,当for正常执行结束,则运行else语句break

二、试题E:蜂巢

1、题目描述

【问题描述】

蜂巢由大量的六边形拼接而成,定义蜂巢中的方向为:0 表示正西方向,1 表示西偏北 60 度,2 表示东偏北 60 度,3 表示正东,4 表示东偏南 60 度,5 表示西偏南 60 度。

对于给定的一点 O,我们以 O 为原点定义坐标系,如果一个点 A 由 O 点先向 d 方向走 p 步再向 (d+2) mod 6 方向 ( d 的顺时针 120 度方向 ) 走 q 步到达,则这个点的坐标定义为 (d, p, q)。在蜂窝中,一个点的坐标可能有多种。

下图给出了点 B(0, 5, 3) 和点 C(2, 3, 2) 的示意。

给定点 (d1​, p1​, q1​) 和点 (d2​, p2​, q2​),请问他们之间最少走多少步可以到达?

【输入格式】

输入一行包含 6 个整数 d1​, p1​, q1​, d2​, p2​, q2​ 表示两个点的坐标,相邻两个整数之间使用一个空格分隔。

【输出格式】

输出一行包含一个整数表示两点之间最少走多少步可以到达。

【样例输入】

0 5 3 2 3 2

【样例输出】 

7

【评测用例规模与约定】

对于 25% 的评测用例,p1​,p2​≤10^3;

对于 50% 的评测用例,p1​,p2​≤10^5;

对于 75% 的评测用例,p1​,p2​≤10^7;

对于所有评测用例,0≤d1​,d2​≤5,0≤q1​<p1​≤10^9,0≤q2​<p2​≤10^9。

【运行限制】

  • 最大运行时间:1s
  • 最大运行内存:512M

2、我的想法

该题令我不知如何下手,一开始我是想以原点为中转计算距离,后面发现这样走需要较复杂的逆处理且算不出最短距离,遂作罢。

3、官方题解

  • 本题是一道构造题,考点有两个:坐标转换、距离计算。蜂巢有 6 个方向,看起来比较复杂,但实际上走步非常简单。例如样例中从 B 走到 C,C 在 B 的右下方,B 只要一直向右向下走,且不超过 C 的行和列,不管怎么走,一定能以最小步数走到 C。
  • 本题的难点是对坐标的处理。如果是简单的直角坐标系,很容易计算。本题是六角形的蜂巢,每个蜂巢的中心点是否能转为直角坐标?
  • 显然是能转换成直角坐标的,我们先巧妙的构建 “蜂巢” 坐标系。

  • 先计算得到起点坐标 (x1,y1)、终点坐标 (x2,y2)
  • 如何计算起点到终点的步数?下面给出一个简单巧妙的方法。(确实很巧妙,我他喵还能这么计算)

坐标之差的绝对值 dx = |x1-x2|,dy = |y1-y2|,有以下结论:(结论自己观察一下图找找规律,你会恍然大悟)

1)若 dx > dy,那么最少步数是 (dx+dy)//2,即先横着走,再斜着走

2)若 dx < dy,一直斜着走就行,最少步数是dy。

代码如下:

dx=[-2,-1,1,2,1,-1]
dy=[0,1,1,0,-1,-1]def walk(d,p,x,y):x=x+dx[d]*py=y+dy[d]*preturn x,yd1,p1,q1,d2,p2,q2=map(int,input().split())
x1,y1=walk(d1,p1,0,0)
x1,y1=walk((d1+2)%6,q1,x1,y1)
x2,y2=walk(d2,p2,0,0)
x2,y2=walk((d2+2)%6,q2,x2,y2)ax,ay=abs(x1-x2),abs(y1-y2)
if ax<ay:print(ay)
else:print((ax+ay)//2)

当然也有其他解法,这里就不另作讨论了。

  • 这道题属于杂题,杂题没有用到复杂算法,不懂数据结构和算法的初学者也能做
  • 题目可难可易,考核参赛者的思维和编码能力
  • 杂题在蓝桥杯和其他算法竞赛中,都是常见且必不可少的题型

三、试题F:消除游戏

1、题目描述

【问题描述】

在一个字符串 S 中, 如果 Si​=S(i−1)​ 且 Si​≠S(i+1)​,则称 Si​ 和 Si+1​ 为边缘字符。如果 Si​≠Si−1​ 且 Si​=Si+1​, 则 S(i−1)​ 和 Si​ 也称为边缘字符。其它的字符都不是边缘字符。

对于一个给定的串 S,一次操作可以一次性删除该串中的所有边缘字符 (操作后可能产生新的边缘字符)。

请问经过 2^64 次操作后,字符串 S 变成了怎样的字符串, 如果结果为空则输出 EMPTY。

【输入格式】

输入一行包含一个字符串 S。

【输出格式】

输出一行包含一个字符串表示答案,如果结果为空则输出 EMPTY。

【样例输入 1】

edda

【样例输出 1】

EMPTY

样例输入 2

sdfhhhhcvhhxcxnnnnshh

样例输出 2

s

2、我的想法(AC掉58.3%,剩下全超时)

既然是一次性删除所有的边缘字符,那么我就把当前字符串的所有边缘字符先选出来,然后做好标记筛掉即可,需要注意的是,由于同一个边缘字符可能被选出2次,我就用集合进行去重。

#这个模拟题解只能过58.3%
from copy import deepcopy
s=list(input())
stop=0
while stop<2**64:p=set()for i in range(1,len(s)-1):if s[i]==s[i-1] and s[i]!=s[i+1]:p.add(i)p.add(i+1)if s[i]!=s[i-1] and s[i]==s[i+1]:p.add(i)p.add(i-1)if len(p)==0:           #提前结束标志s="".join(s)print(s)breaks1=[]for i in range(len(s)):   #注意这里的范围啊,每个位置都要判断一次if i not in p:s1.append(s[i])s=deepcopy(s1)p.clear()if len(s)==0:print("EMPTY")breakstop+=1

可惜没办法全部AC掉。

3、官方题解

  • 当删除字符后,下一轮的边缘字符只与当前删除的字符有关,即与当前删除字符的左右字符有关,则在下一轮的判断中,就不需要再遍历一遍新字符串了,我们只需要标记住字符的左右字符,然后循环处理即可。
  • 要想加快时间,就必须牺牲空间。这告诉我要学会利用空间标记信息

代码如下:

N=10**6+10
pos=[]
l,r=[0]*N,[0]*N
st=[False]*N
s=input()
n=len(s)
s="@"+s+"@"
# 构建双向链表
for i in range(1,n+1):l[i]=i-1r[i]=i+1
# 查找所有边缘字符
def check(i):if s[l[i]]=="@" or s[r[i]]=="@":returnif s[l[i]]==s[i] and s[r[i]]!=s[i]:pos.append(r[i])pos.append(i)if s[l[i]]!=s[i] and s[r[i]]==s[i]:pos.append(l[i])pos.append(i)
def remove(j):r[l[j]]=r[j]l[r[j]]=l[j]# 删除j结点,置为Truest[j]=True
for i in range(1,n+1):check(i)
while pos:ne=[]          #存储左右邻居for p in pos:if st[p]:continueremove(p)。    #删除当前结点的同时要更新左边的邻居邻居、更新右边邻居的邻居ne.append(l[p])   ne.append(r[p])pos=[]            #清空posfor e in ne:      #对当前删除结点的左右邻居进行筛选判断是不是边缘字符,因为新一轮的边缘字符只能在此产生if not st[e]:check(e)
ans=""
for i in range(1,n+1):if not st[i]:ans+=s[i]
if ans:print(ans)
else:print("EMPTY")

四、试题G:全排列的价值

1、问题描述

蓝桥杯2022年第十三届省赛真题-全排列的价值 - C语言网

2、我的想法(AC掉25%,剩下全超时)

对题目的描述进行简单模拟。

from itertools import *
n=int(input())
lst=[i for i in range(1,n+1)]
cnt=0
for i in permutations(lst):for j in range(1,n):for k in range(j):if i[k]<i[j]:cnt+=1
print(cnt%998244353)

显然过不了。

3、官方题解

假定4个数排序:

  • 正排序:1,2,3,4价值和为6,反排序:4,3,2,1的价值和为0
  • 正排序:1,3,2,4价值和为5,反排序:4,2,3,1的价值和为1
  • ……
  • 依次推下去就会发现这种正排序和对应的反排序的价值和相加为一个定值6,所以4个数排序就是24种排序方式,12对排列式,价值和也就有12个6,总价值和就是72
  • 所以当输入n个数时就有 n!/2 对排列式,而我们可以靠第一个正排序就能推出这个定值价值和,说白了就是 0+1+2+3,就是一个简单的等差数列求和,一对排列式的价值和就是 n(n-1)/2,那么总价值和为 n!*n(n-1)/4 后面还是错了,搜了半天才发现要边循环边取余,不然后面数太大了要占时间。
a= int(input())
s= a*(a-1)/4
for i in range(1,a+1):s*=is%=998244353
print(int(s))

这提醒我们什么,草稿纸和笔也很重要!对于可能存在规律的题目,我们可以用纸笔举例来推测规律。

五、试题H:技能升级

1、题目描述

蓝桥杯2022年第十三届省赛真题-技能升级 - C语言网

2、我的想法(AC掉40%,剩下全超时)

模拟:每次升最大的攻击力,然后更新攻击力和减少一次更新次数。

from math import *
n,m=map(int,input().split())
p=[]
cnt=0
for _ in range(n):a,b=map(int,input().split())p.append([a,b]+[ceil(a/b)])
p.sort(key=lambda x:x[0],reverse=True)
#print(p)
for _ in range(m):if p[0][2]>0 and p[0][0]>0:cnt+=p[0][0]p[0][2]-=1p[0][0]-=p[0][1]p.sort(key=lambda x:x[0],reverse=True)
print(cnt)

技巧:用好列表的 sort(),同时利用数组存储同一个“关系”的信息。

3、官方题解

二分法。有一说一,这代码我也没看懂,这道题估计考试的时候拿40%我就很满足了。

def check(x):res = 0for i in range(n):if A[i] >= x:res += (A[i]-x)//B[i] + 1return resn,m = map(int,input().split())
A = [-1]*(n+1)          #首次提升的攻击力
B = [-1]*(n+1)          #每次提升后减少的点数
for i in range(n):a,b = map(int,input().split())A[i],B[i] = a,bl,r = 0,2*10**6
while l < r:mid = (l+r+1) >> 1 #最后一次技能加点的攻击力if check(mid) >= m: l = midelse: r = mid - 1
ans = 0
for i in range(n):  #遍历每一个攻击力,看每一个被减了多少次if A[i] >= r:t = (A[i]-r) // B[i] + 1  # 减了多少次if A[i]-(t-1)*B[i] == r : t-=1m -= t           # m的次数减去tans += (t * (2 * A[i] + - (t - 1) * B[i])) / 2print(int(ans + m*r))

六、试题I:最长不下降子序列

1、题目描述

蓝桥杯2022年第十三届省赛真题-最长不下降子序列 - C语言网 (dotcpp.com)

2、我的想法

世上最痛苦的事情莫过于此(悲),我看着这题第一反应就是dp,第一思路如下代码所示。

n,k=map(int,input().split())
A=list(map(int,input().split()))for i in range(n-k):      #枚举每一种更换成k的情况for j in range(i,i+k):# 1.换数# 2.求不下降子序列的长度# 3.更新最值

我卡在了 “1.换数” 这一步。该换什么数,要怎么换是我没有想清楚的。

3、官方题解

暂无找到python版很好的相关题解,其中有个C++的 "权值线段树+离散化+动态规划" 解法比较不错,待后面我复习一下相关算法内容,弄懂C++代码,再复刻一个Python代码出来。

以上,第十三届蓝桥杯省赛Python大学B组复盘

祝好

 

相关文章:

第十三届蓝桥杯省赛Python大学B组复盘

目录 一、试题B&#xff1a;寻找整数 1、题目描述 2、我的想法 3、官方题解 4、另解 二、试题E&#xff1a;蜂巢 1、题目描述 2、我的想法 3、官方题解 三、试题F&#xff1a;消除游戏 1、题目描述 2、我的想法&#xff08;AC掉58.3%&#xff0c;剩下全超时&#x…...

linux入门---vim的配置

这里写目录标题预备知识如何配置vimvim一键配置预备知识 在配置vim之前大家首先得知道一件事就是vim的配置是一人一份的&#xff0c;每个用户配置的vim都是自己的vim&#xff0c;不会影响到其他人&#xff0c;比如说用户xbb配置的vim是不会影响到用户wj的&#xff0c;虽然不同…...

Python简写操作(for、if简写、匿名函数)

Python简写操作&#xff08;for、if简写、匿名函数&#xff09;1. for 简写1.1 一层 for 循环1.2 两层 for 循环2. if 简写3. for 与 if 的结合简写4. 匿名函数 lambda1. for 简写 举个例子&#xff1a; y [1, 2, 3, 4, 5, 6] result [(i * 2) for i in y] print(result)# …...

毕业设计常用模块之温湿度模块DHT11模块使用

DHT11是一款可以测量温度数据和湿度数据的传感器 产品特点 暖通空调、除湿器、农业、冷链仓储、测试及检测设备、消费品、汽车、自动控制、数据记录器、气 象站、家电、湿度调节器、医疗、其他相关湿度检测控制 外形尺寸 第3管脚&#xff1a;NC 是没有用的 典型电路 通信方式…...

Cadence Allegro 导出Design Rules Net Shorts Check(DRC)Report报告详解

⏪《上一篇》   🏡《上级目录》   ⏩《下一篇》 目录 1,概述2,Design Rules Net Shorts Check(DRC)Report作用3,Design Rules Net Shorts Check(DRC)Report示例4,Design Rules Net Shorts Check(DRC)Report导出方法4.1,方法14.2,方法2...

第 46 届世界技能大赛浙江省选拔赛“网络安全“项目C模块任务书

第46届世界技能大赛浙江省选拔赛"网络安全"项目C模块&#xff08;夺旗行动&#xff08;CTF&#xff09;挑战&#xff09;第46届世界技能大赛浙江省选拔赛"网络安全"项目C模块第一部分 WEB第二部分 CRYPTO第三部分 REVERSE第四部分 MISC第五部分 PWN第46届世…...

C++:详解C++11 线程(一):MingGW 各版本区别及安装说明

MingGW 各版本区别一&#xff1a;MinGW、MinGW-w64 简介二&#xff1a;MinGW 各版本参数说明三&#xff1a;下载解压一&#xff1a;MinGW、MinGW-w64 简介 MinGW&#xff08;全称为 Minimalist GNU for Windows&#xff09;&#xff0c;它实际上是将经典的开源 C 语言编译器 G…...

第十二章 ArrayList和 LinkedList的区别

ArrayList&#xff1a;基于动态数组&#xff08;自动扩容&#xff09;&#xff0c;连续内存存储&#xff0c;由于底层是数组&#xff0c;适合使用下标进行访问&#xff0c;但扩容一直都是数组的缺点&#xff0c;所以使用尾插法进行扩容可以有效提高扩容效率。还有就是创建Array…...

案例06-复用思想的接口和SQL

目录 一&#xff1a;背景介绍 二&#xff1a;思路&方案 三&#xff1a;过程 1.Controller层接口的复用 2.Mapper层sql语句的复用 四&#xff1a;总结 一&#xff1a;背景介绍 我们在开发项目的过程中非常容易出现的一种现象就是用什么我就直接写什么&#xff0c;就像我…...

【Java学习笔记】17.Java 日期时间(2)

前言 本章继续介绍Java的日期时间。 Calendar类 我们现在已经能够格式化并创建一个日期对象了&#xff0c;但是我们如何才能设置和获取日期数据的特定部分呢&#xff0c;比如说小时&#xff0c;日&#xff0c;或者分钟? 我们又如何在日期的这些部分加上或者减去值呢? 答案…...

【学习Docker(八)】Docker Canal的安装与卸载

座右铭&#xff1a;《坚持有效输出&#xff0c;创造价值无限》 最近想了解下canal&#xff0c;自行搭建并完成数据同步。经过了几天的踩坑之旅&#xff0c;今天终于搭建成功了。 环境&#xff1a;canalv1.1.5、MySQL8.0、JDK1.8 安装MySQL 创建存放目录 mkdir /docker-localm…...

python的django框架从入门到熟练【保姆式教学】第三篇

在前两篇博客中&#xff0c;我们介绍了Django框架的模型层和数据库迁移功能。本篇博客将重点介绍Django的视图层&#xff08;View&#xff09;&#xff0c;并讲解如何创建视图函数和URL路由。 视图层&#xff08;View&#xff09; Django的视图层是Django应用程序的另一个核心…...

Open3D(C++) Ransac拟合球体(详细过程版)

目录 一、算法原理1、计算流程2、参考文献二、代码实现三、结果展示一、算法原理 1、计算流程 空间球方程: ( x − a ) 2 + ( y − b...

Antlr Tool与antlr runtime的版本一致性问题

1. 意外的问题 在学习Antlr4的visitor模式时&#xff0c;使用IDEA的Antlr插件完成了Hello.g4文件的编译&#xff0c;指定的package为com.sunrise.hello 使用visitor模式遍历语法解析树&#xff0c;遍历过程中打印hello语句 public class HelloVisitorImpl extends HelloBaseVi…...

嵌入式中CAN测试自动化方法分析

can的基础知识 CAN是什么? CAN 是 Controller Area Network 的缩写(以下称为 CAN),是 ISO*1 国际标准化的串行通信协议在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类…...

基于c++、opencv、cuda、Visual Studio编程

一、前言 opencv自带的支持的cuda的函数不少,但是不一定够用,而且已经支持的函数有些还不是十分的完善。所以更多的时候还需要编写自己的kernel以进行加速自定义处理。如果基于opencv进行计算机视觉相关开发工作,那么熟悉c++、opencv、cuda编程是避免不了的环节。 二、准备工…...

MATLAB——DFT(离散傅里叶变换)

题目1&#xff1a; 已知有限长序列x(n)为&#xff1a; x(n)[0,1,2,3,4,5,6,7,8,9]&#xff0c;求x(n)的DFT和IDFT。要求 1&#xff09;画出序列傅里叶变换对应的|X(k)|和arg[X(k)]图形。 2&#xff09;画出原信号与傅里叶逆变换IDFT[X(k)]图形进行比较。 知识点&#xff1a; DF…...

高端Zynq ultrascale+使用GTH回环测试 提供2套工程源码和技术支持

这目录1、前言2、GTH 高速收发器介绍GTH 高速收发器结构参考时钟的选择和分配GTH 发送端GTH 接收端3、vivado工程详解4、上板调试验证5、福利&#xff1a;工程代码的获取1、前言 Xilinx系列FPGA内置高速串行收发器&#xff0c;配有可配置的IP方便用户调用&#xff0c;按照速度…...

入门(Createing a scene)

这一部分将对three.js来做一个简要的介绍 首先将开始搭建一个场景&#xff0c;其中包含一个正在旋转的立方体 梦开始的地方 在开始使用threeJS之前&#xff0c;我们需要创建一个HTML文件来显示它&#xff08;将下列HTML代码保存为你电脑上的一个HTML文件然后在你的浏览器中打…...

Unity入门精要03---透明效果

本节知识架构 1.渲染顺序与渲染队列 如果采用了透明度混合即要是实现半透明效果&#xff0c;那么就要关闭深度写入&#xff0c;那么此时渲染顺序就会变得非常非常重要&#xff0c;不然会出现不正确的遮挡效果。具体的分析可见书中解释 一句话概括就是因为没有写入深度&#xf…...

一文解码:如何在人工智能热潮下实现产业“智”变

近期由ChatGPT有关人工智能的话题引发了全民热议&#xff0c;在这股子浪潮下&#xff0c;讨论最多的话题就是ChatGPT的出现会为我们带来怎样的技术变革&#xff1f;是否会改变我们目前的生产方式&#xff1f;对于未来人工智能技术的发展&#xff0c;我们该如何客观看待&#xf…...

webshell管理工具-菜刀的管理操作

什么是webshell Webshell是一种运行在Web服务器上的脚本程序&#xff0c;通常由黑客使用来绕过服务器安全措施和获取对受攻击服务器的控制权。Webshell通常是通过利用Web应用程序中的漏洞或者弱密码等安全问题而被植入到服务器上的。 一旦Webshell被植入到服务器上&#xff0…...

dl----算法常识100例

1.depthwise卷积&&Pointwise卷积 depthwise与pointwise卷积又被称为Depthwise Separable Convolution&#xff0c;与常规卷积不同的是此卷积极大地减少了参数数量&#xff0c;同时保持了模型地精度&#xff0c;depthwise操作是先进行二维平面上地操作&#xff0c;然后利…...

京东百亿补贴,不要把方向搞偏了

出品 | 何玺 排版 | 叶媛 我吐槽来了。 3月6日0时&#xff0c;京东正式加入百亿补贴战局。那么&#xff0c;京东百亿补贴力度如何&#xff1f;用户又有什么反馈&#xff1f;我们一起来看看。 01 京东百亿补贴实测 京东百亿补贴上线的第一天&#xff0c;玺哥就亲自进行了体…...

Java中的static与final关键字

一、static关键字 static修饰位置表示含义变量表示这是一个类变量&#xff0c;类加载时分配在堆中方法静态方法&#xff0c;不依赖于对象可直接通过类标识访问代码块静态代码块&#xff0c;只在类加载初始化阶段时执行一次内部类静态嵌套类&#xff0c;表示只是放在外部类的文…...

开学新装备 - 学生党是否该入手 MacBook

学生党是否该入手 macbook 这个问题&#xff0c;相信许多人在许多社区都有看到过类似讨论。只不过&#xff0c;许多讨论都掺杂了信仰、智商税、不懂、不熟悉未来需求等各种因素&#xff0c;导致内容空洞价值不大。这篇文章&#xff0c;抛开了所有非理性因素&#xff0c;详细的告…...

【前端技巧】ESLint忽略检查行和文件

Author&#xff1a;Outman Date&#xff1a;2023-03-10 ESLint忽略检查行和文件 一、注释方式 1.注释忽略 —— 块注释 /* eslint-disable */ console.log(test); /* eslint-enable */2.注释忽略 —— 忽略指定规则项 /* eslint-disable no-alert, no-console */ alert(tes…...

单片机学习笔记之点阵(8x8)

心血来潮&#xff0c;想捡一下丢了很久的单片机&#xff0c;纪录一下单片机学习简单的点阵显示&#xff0c;及踩到的䟘&#xff0c;找到吃灰很久的普中科技开发板&#xff08;非广告&#xff0c;为毕设学习买的&#xff09;。 1. 使用工具 使用开发板&#xff1a; 普中科技开发…...

我一个普通程序员,光靠GitHub打赏就年入70万,

一个国外程序员名叫 Caleb Porzio在网上公开了自己用GitHub打赏年入70万的消息和具体做法。 Caleb Porzio 发推庆祝自己靠 GitHub 打赏&#xff08;GitHub Sponsors&#xff09;赚到了 10 万美元。 GitHub Sponsors是 GitHub 2019 年 5 月份推出的一个功能&#xff0c;允许开发…...

剖析Spring MVC如何将请求映射到Controller

Spring MVC是一种基于Java的Web框架&#xff0c;可以帮助开发者快速地构建Web应用程序。在Spring MVC中&#xff0c;请求将会被映射到对应的Controller中进行处理。本文将会介绍Spring MVC如何将请求映射到Controller的过程。 DispatcherServlet DispatcherServlet是Spring M…...

设计模式之美-工厂模式

分类&#xff1a;简单工厂模式&#xff08;静态工厂模式&#xff09;&#xff0c;工厂方法模式&#xff0c;抽象工厂模式。 这种设计模式也是 Java 开发中最常见的一种模式&#xff0c;它的主要意图是定义一个创建对象的接口&#xff0c;让其子类自己决定实例化哪一个工厂类&a…...

A Star算法最通俗易懂的一个版本

01-概述虽然掌握了 A* 算法的人认为它容易&#xff0c;但是对于初学者来说&#xff0c; A* 算法还是很复杂的。02-搜索区域(The Search Area)我们假设某人要从 A 点移动到 B 点&#xff0c;但是这两点之间被一堵墙隔开。如图 1 &#xff0c;绿色是 A &#xff0c;红色是 B &…...

JavaWeb--ListenerAjaxaxiosjson

Listener&Ajax&axios1 Listener1.1 概述1.2 分类1.3 代码演示2 Ajax2.1 概述2.1.1 作用2.1.2 同步和异步2.2 快速入门2.2.1 服务端实现2.2.2 客户端实现2.2.3 测试2.3 案例2.3.1 分析2.3.2 后端实现2.3.3 前端实现2.4 测试3 axios3.1 基本使用3.2 快速入门3.2.1 后端实…...

NoneBot2,基于Python的聊天机器人

NoneBot2&#xff0c;基于Python的聊天机器人第一步&#xff0c;配置python第二步&#xff0c;配置[go-cqhttp](https://github.com/Mrs4s/go-cqhttp)第三步&#xff0c;配置[NoneBot](https://61d3d9dbcadf413fd3238e89--nonebot2.netlify.app/)NoneBot2 是一个现代、跨平台、…...

java反射机制及其详解

反射反射机制反射调用优化有时候我们做项目的时候不免需要用到大量配置文件&#xff0c;就拿框架举例&#xff0c;通过这些外部文件配置&#xff0c;在不修改的源码的情况下&#xff0c;来控制文件&#xff0c;就要用到我们的反射来解决 假设有一个Cat对象 public class Cat …...

Leetcode—环形链表

前言&#xff1a;给定一个链表&#xff0c;判断是否为循环链表并找环形链表的入口点 首先我们需要知道什么是双向循环链表&#xff0c;具体如下图所示。 对于链表&#xff0c;我们如何去判断链表是循环链表呢&#xff1f;又寻找入环点呢&#xff1f;我们可以利用快慢指针的方法…...

蓝牙耳机哪个戴的最舒服?久戴不累的蓝牙耳机推荐

在喧嚣的时代中&#xff0c;快节奏和疲惫充斥着我们的生活&#xff0c;于是耳机成为了人们必不可少的东西&#xff0c;无论是闲暇时亦或是正处在工作时&#xff0c;都会将它戴上&#xff0c;出门在外戴耳机变成了常态&#xff0c;所以小编就整理了一期久戴不累的蓝牙耳机。 No…...

25k的Java开发常问的AQS问题有哪些?

前言:面试高频的AQS问题大多。本文将以实战面试角度出发,将面试官喜欢问的一些问题罗列出来。 文章目录 AQSAQS定义底层实现独占锁举例底层实现独占锁超时获取锁共享锁举例共享锁实现原理作者辟谣AQS AQS定义 AQS的全称是AbstractQueuedSynchronizer,也就是抽象队列同步器…...

Grafana 监控面板绘制流程

本篇作者&#xff1a;IoTDB 社区 -- 张洪胤本文以 IoTDB V1.0.1 版本为例本文档介绍了 Apache IoTDB 监控指标通过 Prometheus 的方式进行采集&#xff0c;并且使用 Grafana 的方式进行可视化。1监控指标的 Prometheus 格式说明对于 Metric Name 为 name, Tags 为 K1V1, ..., K…...

一句话设计模式5:责任链模式

责任链模式:步步为营。 文章目录 责任链模式:步步为营。前言一、责任链模式的作用二、如何实现责任链1 既然是责任链,那么就需要一个链路的承载体 ChainBody2 责任链中每一步都是一个抽象类,因为承载体仅仅是构造链路顺序,里面不放置任何具体业务逻辑:步骤抽象类3 具体步骤执行…...

保姆级使用PyTorch训练与评估自己的EVA网络教程

文章目录前言0. 环境搭建&快速开始1. 数据集制作1.1 标签文件制作1.2 数据集划分1.3 数据集信息文件制作2. 修改参数文件3. 训练4. 评估5. 其他教程前言 项目地址&#xff1a;https://github.com/Fafa-DL/Awesome-Backbones 操作教程&#xff1a;https://www.bilibili.co…...

Java--JMH--性能测试--测试软件运行效率/时间--StopWatch

写在前面: 很多时候想要测试代码运行时间&#xff0c;或者比较2个运行的效率。 最简单的方法就是Sytem.currentTimeMillis记录2开始和结束时间来算 但是Java 代码越执行越快&#xff0c;放在后面的方法会有优势&#xff0c;这个原因受留个眼&#xff0c;以后研究。大概有受类加…...

JavaScript Array(数组)对象

数组对象的作用是&#xff1a;使用单独的变量名来存储一系列的值。参数参数 size 是期望的数组元素个数。返回的数组&#xff0c;length 字段将被设为 size 的值。参数 element ...; elementn 是参数列表。当使用这些参数来调用构造函数 Array() 时&#xff0c;新创建的数组的元…...

干货 | 电容在电路35个基本常识

第1个电压源正负端接了一个电容&#xff0c;与电路并联&#xff0c;用于整流电路时&#xff0c;具有很好的滤波作用&#xff0c;当电压交变时&#xff0c;由于电容的充电作用&#xff0c;两端的电压不能突变&#xff0c;就保证了电压的平稳。当用于电池电源时&#xff0c;具有交…...

日读300篇文献的技巧

感觉自己看文章很慢&#xff0c;有时候也抓不住重点。 如果是英文文献的话&#xff0c;可能还要有点难度&#xff0c;毕竟英语渣渣还是需要有中文-》英文的转换过程。 最近在搞毕业论文的时候&#xff0c;发现了一个非常好玩的东西&#xff0c;大大提升了我看文章搞科研&#x…...

C++核心编程

一、内存分区模型概述&#xff1a;C程序在执行时&#xff0c;将内存划分为4个区域程序运行前&#xff1a;代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统管理①共享。共享的目的是对于频繁被执行的程序&#xff0c;在内存中只需有一份代码即可②只读。使其只…...

SpringMVC程序开发

目录 SpringMVC 1、MVC定义 2、MVC和SpringMVC之间的关系 学SpringMVC 1、Spring MVC的创建和连接 浏览器获取前端接口和后端程序连接功能实现 2、获取参数 2.1、传递单个参数/多个参数 2.2、传递对象 2.3、传递表单参数 2.4、后端参数重命名 2.5、RequestBody接收J…...

多版本并发控制MVCC

什么是MVCC&#xff1f; MVCC是一种并发控制方法&#xff0c;一般在数据库管理系统中&#xff0c;实现数据库的并发访问。 可以使用乐观锁和悲观锁来实现。 MVCC的作用&#xff1f; 可以在不加锁的情况下解决读写问题&#xff0c;同时还可以解决脏读&#xff0c;幻读&#…...

JavaScript Date(日期)对象

日期对象用于处理日期和时间。在线实例返回当日的日期和时间如何使用 Date() 方法获得当日的日期。getFullYear()使用 getFullYear() 获取年份。getTime()getTime() 返回从 1970 年 1 月 1 日至今的毫秒数。setFullYear()如何使用 setFullYear() 设置具体的日期。toUTCString()…...

【Python】AES加解密代码,文章还有加密串等你来解密,等你来挑战

&#x1f366;&#x1f366;写这篇AES文章也是有件趣事&#xff0c;有位小伙伴发了段密文&#xff0c;看看谁解密速度快&#xff0c;学过Python的小伙伴一下子就解开来了&#xff0c;内容也挺有趣的。 &#x1f35f;&#x1f35f;原来加解密也可以这么有趣&#xff0c;虽然看起…...