蓝桥杯第26天(Python)考前挣扎
题型:
1.思维题/杂题:数学公式,分析题意,找规律
2.BFS/DFS:广搜(递归实现),深搜(deque实现)
3.简单数论:模,素数(只需要判断到 int(sqrt(n))+1),gcd,lcm,快速幂(位运算移位操作),大数分解(分解为质数的乘积)
4.简单图论:最短路(一对多(Dijstra,临接表,矩阵实现),多对多(Floyd,矩阵实现)),最小生成树(并查集实现)
5.简单字符串处理:最好转为列表操作
6.DP:线性DP,最长公共子序列,0/1背包问题,最长连续字符串,最大递增子串
7.基本算法:二分,贪心,组合,排列,前缀和,差分
8.基本数据结构:队列,集合,字典,字符串,列表,栈,树
9.常用模块:math,datetime,sys中的设置最大递归深度(sys.setrecursionlimit(3000000)),collections.deque(队列),itertools.combinations(list,n)(组合),itertools.permutations(list,n)(排列) heapq(小顶堆)
目录
题型:
模板回顾:
1.DFS代码框架(搜图建议↓为x方向,→为y方向)(找有多少条路径)
搜路径模板
搜索组合模板
BFS+DFS
2.BFS逐层搜索(找最短路径)
搜索模板
BFS搜索示例 (通过set()去重)
3.并查集(连通子图,最小生成树)
4.DP动态规划 ( 完全背包 http://t.csdn.cn/HnkGN)( http://t.csdn.cn/jSSby)
0/1背包问题:
最长公共子序列
最长递增子序列(LIS)
编辑距离(字符串转换)
5.数论
LCM和GCD
快速幂
矩阵乘法
埃式筛
大数分解(质因数分解)
6.组合数学
加法原理
鸽巢原理
杨辉三角编辑
7.计算几何
点积
叉积
点跟直线关系
8.图论算法(图论章节http://t.csdn.cn/pitI6)
存边方式
Floyd算法
Dijstra算法
Bellman-ford算法
9.常用库
10.前缀和、差分
模板回顾:
1.DFS代码框架(搜图建议↓为x方向,→为y方向)(找有多少条路径)
(BFS章节:http://t.csdn.cn/iv8UO)
标记数组,记录数组,全局变量ans
搜路径模板
搜索组合模板
BFS+DFS
import sys #设置递归深度
import collections #队列
import itertools # 排列组合
import heapq
sys.setrecursionlimit(100000)s="01010101001011001001010110010110100100001000101010 \
10000001100111010111010001000110111010101101111000"vis=[[0]*60 for _ in range(60)] # 标记是否访问过
fa=[['']*60 for _ in range(60)] # 记录父结点
flag=['D','L','R','U'] # ↓x → y
##a = list(s.split(' '))
##print(a)
##ss=[]
##for i in s: #转为2维列表
## ss.append(i)
##print(ss)
ss=[]
for i in range(30):ss.append(list(map(int,input())))def dfs(x,y): # 通过DFS遍历找路径if x==0 and y==0:returnif fa[x][y]=='D':dfs(x-1,y)if fa[x][y] =='L': dfs(x,y+1)if fa[x][y] =='R': dfs(x,y-1)if fa[x][y] =='U': dfs(x+1,y)print(fa[x][y],end='')def bfs(x,y):global faglobal visdeque=collections.deque()walk=[[1,0],[0,-1],[0,1],[-1,0]] # 下,左,右,上vis[x][y]=1deque.append((0,0)) # 添加进队列while deque:x,y=deque.popleft()#print(x,y)if x==29 and y==49:print("找到终点!!")breakfor index in range(4):dx,dy=walk[index]nx=x+dx;ny=y+dyif 0<=nx<=29 and 0<=ny<=49 :if vis[nx][ny]==0 and ss[nx][ny]==0: # 坐标合法且没有走过vis[nx][ny]=1deque.append((nx,ny))fa[nx][ny]=flag[index]bfs(0,0)
dfs(29,49)
用栈记录路径,即在保护现场是入栈,恢复现场时出栈。
2.BFS逐层搜索(找最短路径)
(BFS章节:http://t.csdn.cn/G1kgx)
搜索模板
BFS搜索示例 (通过set()去重)
3.并查集(连通子图,最小生成树)
4.DP动态规划 ( 完全背包 http://t.csdn.cn/HnkGN)( http://t.csdn.cn/jSSby)
0/1背包问题:
def solve(N,C): # 从左到右,从上到下 (先种类,再体积)for i in range(1,N+1): # N种物品,先1种,再2种......for j in range(1,C+1): # 当前背包体积if c[i]>j : dp[i][j] = dp[i-1][j] # 新增的第i种物品的体积大于背包重量,只有不选,继承上一个选择else: dp[i][j] = max(dp[i-1][j-c[i]]+w[i],dp[i-1][j]) # 装或者不装,找最大值return dp[N][C]
N,C= map(int,input().split())
n=3010
dp = [[0]*n for i in range(n)] # 初始化dp数组,预留更大空间
c=[0]*n # 记录体积
w=[0]*n # 记录价值
for i in range(1,N+1): #读入N种物品的价值和体积c[i],w[i] = map(int,input().split())
print(solve(N,C))
最长公共子序列
n,m = map(int,input().split()) # B n个元素 A m个元素
a = [0] + list(map(int,input().split()))
b = [0] + list(map(int,input().split()))
dp = [[0]*(m+1) for _ in range(2)] # 注意这里是m,不是n
now = 0 ;old = 1
for i in range(1,n+1):now,old = old,nowfor j in range(1,m+1):dp[now][j] = max(dp[now][j-1],dp[old][j])if a[i]==b[j]: # 相同的元素dp[now][j] = max(dp[now][j],dp[old][j-1]+1)
print(dp[now][m])
最长递增子序列(LIS)
N =int(input()) # 对手个数
a = [0]+[int(i) for i in input().split()] # 记录对手战力值
dp = [0]*(N+1) # 记录以第i个数为结尾的最长递增子序列
dp[1]=1
for i in range(2,N+1): # 从2-N循环for j in range(1,i): # 查找前面的比a[i]小的if a[j]<a[i] and dp[j]>dp[i]: #找到小的同时给他赋值max(dp[j])dp[i]=dp[j]dp[i]+=1 # 加1,即本身
编辑距离(字符串转换)
5.数论
LCM和GCD
快速幂
位运算
通过 n&1=True,则n最低位就是1
n>>,n右移动def fast(a,n,mod):ans=1a%=mod # 提升运算效率,Python不用担心大数月越界问题while(n)>0:if n&1 :ans=(a*ans)%mod#a=a*a # 翻倍a=(a*a)%mod # 翻倍n=n>>1 # 右移一位
a,b,mod = map(int,input().split())
print(fast(a,b,mod))
矩阵乘法
埃式筛
大数分解(质因数分解)
import sys #设置递归深度
import collections #队列
import itertools # 排列组合
import heapq #小顶堆
import math
sys.setrecursionlimit(300000)#对一个数进行大数分解
ans=0
n=int(input())
for i in range(2,int(math.sqrt(n))+1):if n%i==0: #发现质数ans+=1#print(i) # 打印质数约数while n%i==0: # 消除这个质数n=n//i
if n>1:#print(n) # 打印质数约数ans+=1
print(ans)
6.组合数学
加法原理
鸽巢原理
杨辉三角
import os
import sys# 骗分写法
n=int(input())
a=[[1],[1,1]]
for i in range(1,500): # 50-1+2行b=[]temp=0for j in range(i): # 根据上一行i计算temp=a[i][j]+a[i][j+1]b.append(temp)a.append([1]+b+[1])
# print(a)
b=[]
for i in range(501): #进行队列拼接b=b+a[i]
print(b.index(n)+1) # 直接通过队列值找索引
import os
import sys# 请在此输入您的代码
n=[0,1,1,1,1,2,1]
#n=[[0],[1,1],[1,2,1]]
last=[1,2,1]
for i in range(50):new=[]for a,b in zip(last+[0],[0]+last):new.append(a+b)n.append(new)last=newm=int(input())
print(n.index(m))
7.计算几何
点积
叉积
点跟直线关系
8.图论算法(图论章节http://t.csdn.cn/pitI6)
存边方式
数组存边
临接矩阵
邻接表
Floyd算法
import os
import sys# 请在此输入您的代码
#floyd算法,多对多def floyd():global dpfor i in range(1,n+1):for j in range(1,n+1):for k in range(1,n+1):dp[i][j]=min(dp[i][j],dp[i][k]+dp[k][j])n,m,q = map(int,input().split())
inf=2**120
dp=[[inf]*(n+1) for i in range(n+1)]
choice=[]
for i in range(m):u,v,w=map(int,input().split())dp[u][v]=wdp[v][u]=w
for i in range(q):s,d = map(int,input().split())choice.append((s,d))
floyd()
for s,d in choice:if dp[s][d]!=inf:print(dp[s][d])continueprint(-1)
Dijstra算法
import heapq # 导入堆
def dij(s):done=[0 for i in range(n+1)] # 记录是否处理过hp=[] #堆dis[s]=0heapq.heappush(hp,(0,s)) #入堆,小顶堆while hp:u=heapq.heappop(hp)[1] #出堆元素结点if done[u]: #当前结点处理过continuedone[u]=1for i in range(len(G[u])): #遍历当前结点的邻居v,w =G[u][i]if done[v]:continuedis[v]=min(dis[v],dis[u]+w) # 更新当前结点邻居的最短路径heapq.heappush(hp,(dis[v],v))n,m = map(int,input().split())#
s=1 # 从1开始访问
G=[[]for i in range(n+1)] #邻接表存储
inf = 2**50
dis = [inf]*(n+1) #存储距离
for i in range(m):# 存边,这里是单向边u,v,w = map(int,input().split())G[u].append((v,w)) #记录结点u的邻居和边长dij(s)
for i in range(1,n+1):if dis[i]==inf:print("-1",end=' ')else:print(dis[i],end=' ')
import sys #设置递归深度
import collections #队列
import itertools # 排列组合
import heapq #小顶堆
import math
sys.setrecursionlimit(300000)def dij():dist[1]=0 #很重要for _ in range(n-1): # 还有n-1个点没有遍历t=-1for j in range(1,n+1):if st[j]==0 and (t==-1 or dist[t]>dist[j]): #找到没处理过得最小距离点t=jfor j in range(1,n+1):dist[j]=min(dist[j],dist[t]+gra[t][j]) # t-j的距离,找最小值st[t]=1 # 标记处理过return dist[n]n,m=map(int,input().split())#下标全部转为从1开始
stay=[0]+list(map(int,input().split()))
stay[n]=0
gra = [[float('inf')] * (n+1) for _ in range(n+1)]
dist = [float('inf')] * (n+1)
st=[0]*(n+1) # 标志是否处理for i in range(m):u,v,w=map(int,input().split()) #这里重构图gra[u][v]=stay[v]+wgra[v][u]=stay[u]+wprint(dij())
Bellman-ford算法
n,m=map(int,input().split())
t=[0]+list(map(int,input().split()))
e=[] #简单的数组存边for i in range(1,m+1):a,b,c = map(int,input().split())e.append([a,b,c]) # 双向边e.append([b,a,c])dist=[2**50]*(n+1)
dist[1]=0for k in range(1,n+1): # 遍历每个点,n个点,执行n轮问路for a,b,c in e: # 检查每条边,每一轮问路,检查所有边res=t[b]if b==n:res=0dist[b]=min(dist[b],dist[a]+c+res) # 更新路径长度print(dist[n])
9.常用库
math
datetime datetime.date() date.days() date.timedelta
sys中的设置最大递归深度(sys.setrecursionlimit(3000000)) sys.exit()
collections.deque(队列)
itertools.combinations(list,n)(组合),itertools.permutations(list,n)(排列)
heapq(小顶堆) heapq.heappush(list,(0,s)) # 将list堆化,向list添加元素(0,s)
10.前缀和、差分
http://t.csdn.cn/rQs6M
相关文章:

蓝桥杯第26天(Python)考前挣扎
题型: 1.思维题/杂题:数学公式,分析题意,找规律 2.BFS/DFS:广搜(递归实现),深搜(deque实现) 3.简单数论:模,素数(只需要…...

WuThreat身份安全云-TVD每日漏洞情报-2023-04-04
漏洞名称:RSA NetWitness Platform 内存损坏漏洞 漏洞级别:中危 漏洞编号:CVE-2022-47529,CNNVD-202303-2419 相关涉及:RSA NetWitness Platform 12.2之前版本 漏洞状态:POC 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2023-07193 漏洞名称:EyouCms <1.5.…...

【C++】Step by Step的格式化代码风格是这样的吗?
文章目录前言一、依赖二、配置总结前言 本节从0开始讲解如何格式化自己的代码风格,使用vscode插件来完成,本节的所有配置都会在星球同步哦~ 一、依赖 本次使用的是clang-format插件,具体安装比较简单: mac系统: br…...

aspnet030高校学生团体管理系统sqlserver
net030高校学生团体管理系统 . 1.用户基本信息管理模块:录入、修改、删除、查询、统计、打印等功能 2.学生成绩管理模块:录入、修改、删除、查询、统计、打印等功能 3.学生团体信息管理模块:录入、修改、删除、查询、统计、打印等功能 4.教…...

学习HM微博项目第10天
步骤:发微博12-表情键盘06-点击表情 -> 发微博13-表情键盘07-插入表情和封装textView -> 发微博14-表情键盘08-长按表情 -> 发微博15-表情键盘09-最近表情 -> 发微博16-表情键盘10-最近表情完善 发微博12-表情键盘06-点击表情 APP的演示动画ÿ…...

0204强连通性-有向图-数据结构和算法(Java)
文章目录1 概述2 强连通分量2.1 定义2.2 Kosaraju算法2.2.1 算法实现2.2.2算法测试2.2.3 算法理解3 强连通性结语1 概述 定义。如果2个顶点是相互可达的,则称它们为强连通的。如果一幅有向图中的任意两个顶点都是强连通的,则称这幅有向图也是强连通的。 …...

ElasticSearch集群
5.2 IK分词器简介 IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始,IKAnalyzer已经推出 了3个大版本。最初,它是以开源项目Lucene为应用主体的,结合词典分词和文法分析算法的中文分…...

音视频基础概念(6)——视频基础
网上冲浪时,我们会接触到网络流媒体和本地视频文件。常见的视频文件格式有MP4、MKV、AVI等。在流媒体网站上看见视频常用的协议有HTTP、RTSP、RTMP、HLS等。视频技术较为复杂,包括视频封装、视频编解码、视频播放和视频转码等内容。1 视频基础概念当下市…...

【Python网络蜘蛛】基础 - 多线程和多进程的基本原理
文章目录多线程和多进程的基本原理多线程的含义并发和并行Python中的多线程和多进程多线程和多进程的基本原理 在编写爬虫程序的时候,为了提高爬取效率,我们可能会同时运行多个爬虫任务,其中同样涉及多进程和多线程。 多线程的含义 先了解一…...

linux C/C++文件路径操作
标题1、 access函数查找文件夹是否存在/文件是否有某权限 头文件: 在windows环境下头文件为: #include <io.h> 在linux环境下头文件为: #include <unistd.h> 函数原型: int access(const char* _Filename, int _Acce…...

Baumer工业相机堡盟相机如何使用BGAPI SDK和Opencv联动实现图像转换成视频(C#)
Baumer工业相机堡盟相机如何使用BGAPI SDK和Opencv联动实现图像转换成视频Baumer工业相机Baumer工业相机SDK技术背景代码分析第一步:先引用OpenCV库第二步:引用图像文件夹生成视频工业相机图像通过OpenCV转为视频的优点工业相机图像转为视频的行业应用…...

Redis常用命令以及如何在Java中操作Redis
前言Redis是一个基于内存的key-value结构数据库,是互联网技术领域使用最为广泛的存储中间件。Redis基于内存存储,读写性能高,适合存储热点数据(热点商品、资讯、新闻)。Redis是一个开源的内存中的数据结构存储系统&…...

ASEMI代理AD7980BRMZRL7原装ADI(亚德诺)车规级AD7980BRMZRL7
编辑:ll ASEMI代理AD7980BRMZRL7原装ADI(亚德诺)车规级AD7980BRMZRL7 型号:AD7980BRMZRL7 品牌:ADI/亚德诺 封装:MSOP-10 批号:2023 安装类型:表面贴装型 AD7980BRMZRL7 汽车…...

leetcode141:环形链表
给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(…...

lattice diamond软件使用
1.diamond软件破解: lisence坚果云下载;或者这个博主操作环境变量设置: 2. 调用IP 有两种方式,依据芯片或者软件版本改变。 传统的IPexpress,每个IP单独例化。 新出的Clarity,多个IP在同一个顶层内调用…...

scala泛型
目录 类型参数 泛型函数: 协变,逆变,不变 泛型上下限: 上下文限定: 泛型是一种类型参数,该类型参数可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法 类型参数 调用时不指定…...

程序员与ChatGPT的日常问答
程序员与ChatGPT的日常问答GPT3.5与GPT4.0能力对比技术问题工具问题编解码问题其他问题本文记录下调教ChatGPT的日常。 GPT3.5与GPT4.0能力对比 Q:采用同一个问题提问,对比下GPT3.5和GPT4.0的能力区别,比如:帮我列一个小白入门音频…...

如何创建高效的Prompt和ChatGPT等大语言模型AI对话
大语言模型,如OpenAI的GPT-4,是一种基于深度学习技术的自然语言处理工具,它可以理解自然语言并为用户提供有价值的回答。然而,要从大语言模型中获得高质量的回答,你需要学会如何高效地提问。本文将从原理出发ÿ…...

043:cesium加载Bing地图(多种形式)
第043个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中加载加载Bing地图。这里显示4种形式的地图,分别为:AERIAL、ROAD、CANVAS_DARK、AERIAL_WITH_LABELS。参考后面的API,还有其他几种形式。 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章…...

vscode代码片段生成
在刚学习vue的时候,有些代码片段是经常写的,在vscode中写一个代码片段可以帮助快速生成。 生成步骤: VSCode中的代码片段有固定的格式,所以我们一般会借助于一个在线工具来完成。 具体的步骤如下: 第一步,复制自己需…...

数据规整:聚合、合并和重塑
目录一、层次化索引重排与分级排序根据级别汇总统计二、合并数据集数据库风格的DataFrame合并索引上的合并轴向连接合并重叠数据三、重塑和轴向旋转重塑层次化索引将“长格式”旋转为“宽格式”将“宽格式”旋转为“长格式”一、层次化索引 层次化索引(hierarchica…...

开心档之C++ 信号处理
C 信号处理 目录 C 信号处理 signal() 函数 实例 raise() 函数 实例 信号是由操作系统传给进程的中断,会提早终止一个程序。在 UNIX、LINUX、Mac OS X 或 Windows 系统上,可以通过按 CtrlC 产生中断。 有些信号不能被程序捕获,但是下表…...

ChatGPT惨遭围剿?多国封杀、近万人联名抵制……
最近,全世界燃起一股围剿ChatGPT的势头。由马斯克、图灵奖得主Bengio等千人联名的“暂停高级AI研发”的公开信,目前签名数量已上升至9000多人。除了业内大佬,欧盟各国和白宫也纷纷出手。 最早“动手”的是意大利,直接在全国上下封…...

SpringBoot监听器
1.寻找spring.factories配置文件对应的监听器,主要要写监听器的全路径名,不然反射会报错 SpringBoot底层是如何读取META-INF/spring.factories的配置的? 1.遍历所有jar下的META-INF/spring.factories配置文件 2.读取配置文件下的所有属性&a…...

【网络安全】SQL注入--报错注入
报错注入报错注入定义代码展示常用的报错语句1.获取数据库名称2.获取mysql账号密码3.获取表名4.获取字段名5.获取账号密码报错注入定义 报错注入:利用sql语句的不规范,获取相关sql提示信息 代码展示 常用的报错语句 select first_name, last_name FROM…...

APP隐私整改建议
1、违规收集个人信息 情形一: APP首次启动时,未有以弹窗形式明示个人信息保护政策。 改进建议: APP首次启动时,以弹窗等形式向用户明示个人信息保护政策。 情形二: 个人信息保护政策未有说明个人信息处理的目的、方…...

MySQL数据模型 and 通用语法 and 分类
关系型数据库 关系型数据库是由多张能互相连接的二维表组成的数据库。 优点: 1.都是使用表结构,格式一致,易于维护。 2.使用通用的SQL语言操作,使用方便,可用于复杂查询。 3.数据存储在磁盘中,安全。 …...

一款识别域名是否使用cdn的工具cdnChecker
cdnChecker 一款识别域名是否使用cdn的工具 https://github.com/alwaystest18/cdnChecker 背景 红队打点时经常会有收集子域名然后转成ip进而扩展ip段进行脆弱点寻找的需求,如果域名使用cdn,会导致收集错误的ip段,因此我们需要排除cdn来收…...

Ant Design Vue的汉化
Ant Design Vue的汉化 1. 引入依赖 import zhCN from "ant-design-vue/lib/locale-provider/zh_CN"; // 汉化 export default {data () {zhCN,} }2. 标签包裹需要汉化的组件 <a-config-provider :locale"zhCN"><a-table :row-selection"ro…...

spring cloud中实现接口广播请求到服务提供者
一、背景 假如现在有一台服务A,两台服务B,可以简化为如下图模型: 需求:一次请求服务A需要同时将请求广播打到两台服务B上。 二、实现方案 2.1 需要应用到两个类: 2.1.1:LoadBalancerClient package org…...