- 博客(12)
- 收藏
- 关注
原创 Canny边缘检测和Otsu算法:提高图像检测的准确性
对于大小为 M×N 的图像 I (x,y),前景 (即目标) 和背景的分割阈值记作 T,属于前景的像素点数占整幅图像的比例记为 ω0,其平均灰度 μ0;图像的总平均灰度记为 μ,类间方差记为 g。Otsu算法:自适应的阈值确定的方法,按照图像的灰度特性,将图像分为目标和背景两部分,背景和目标之间的类间方差越大,说明构成图像的2部分的差别越大,使类间方差最大意味着错分概率最小。数字图像:彩色图像:RGB图,有三个通道:R通道(越红的地方越亮),G通道(越绿的地方月越亮),B通道(越蓝的地方越亮)。
2025-04-22 20:50:20
448
原创 蓝桥杯Python搜索(DFS)习题练习
3935 仙境诅咒4234 小怂爱水洼4360 串变换4494 黄金树5315 张三的社团小游戏13817 混境之地23820 混境之地5
2025-03-22 15:41:52
866
原创 蓝桥杯Python基础算法习题练习
树形数据结构:树状数组,线段树,线段树维护矩阵乘法,线段树维护哈希,可持久化线段树,平衡树Splay和FHQ-Treap。计算几何:计算几何基础,二维计算几何基础,点积和叉积,点和线的关系,线和线的关系,任意多边形面积计算。动态规划:线性DP,二维DP,背包问题,树形DP,区间DP,状压DP,数位DP,期望DP。基础算法:枚举,递归,贪心,离散化,双指针,二分,倍增,快速幂,位运算。数论:高斯消元,埃氏筛和欧拉筛,唯一分解定理,快速幂,求逆元,裴蜀定理。这道题没看懂,后续要注意在看一下!
2025-03-18 19:33:28
849
原创 蓝桥杯Python二维费用背包和分组背包
问题:给定一个容积为V的背包,现在有N组物品,第i组物品有Si件,每件的体积为Wik,价值为Vik(1<=k<=Si)。如果要使用滚动数组,要保证dp[i][j]的更新尽可能同时发生。因此第一重循环枚举i,表示第i组,第二重循环枚举j,表示价值为j,第三重循环枚举第i组的物品。dp[i][j][k]:表示前i件物品,体积为j,重量为k下的最大价值。选:dp[i][j]=dp[i-1][j-wik]+vik。dp[i][j]:表示前i组物品,体积为j的最大价值。不选:dp[i][j]=dp[i-1][j]
2025-03-14 16:45:51
483
原创 蓝桥杯Python多重背包问题
状态转移方程:dp[i][j]=max(dp[i-1][j-k*wi]+k*vi), k=0,...,min(si,j/wi)问题:给定一个容积为V的背包,现有N种物品,第i种物品的体积为wi,价值为vi,数量为si个。拿k件:dp[i][j]从dp[i-1][j-k*wi]+k*vi转移过来,0<=k<=si。种物品可以拿0,1,2...,si个。请求出体积总和不超过V的最大价值。动态规划状态dp[i][j]:前i种物品,体积为j的最大价值。和完全背包原始做法完全相同,只是数量并不是无限,而是si。
2025-03-14 10:35:02
290
原创 蓝桥杯Python完全背包问题
给定一个容积为V的背包,现在有N种物品,第i种物品的体积为wi,价值为vi,每种物品有无数件,请求出体积总和不超过V的最大价值。拿2件:dp[i][j]从dp[i-1][j-wi*2]+vi*2转移过来。拿k件:dp[i][j]从dp[i-1][j-wi*k]+vi*k转移过来。拿1件:dp[i][j]从dp[i-1][j-wi]+vi转移过来。动态规划状态:d[i][j]:前i种物品,体积为j的最大价值。不拿:dp[i][j]从dp[i-1][j]转移过来。这样做更新时间复杂度为O(N*V*V)
2025-03-13 21:29:45
249
原创 蓝桥杯Python背包问题
使用长度为1的滚动数组优化空间,每更新一个dp[i][j],可以覆盖掉上一行,不会影响计算,因此可以使用单个数组进行更新,直接从大到小对dp数组进行覆盖即可。更新dp[i][j]时只和上一行有关,即:第i行的更新,仅和第i-1行有关系,因此可以使用滚动数组。1)拿:dp[i][j]从dp[i-1][j-w[i]]+v[i]转移过来。动态规划状态:d[i][j]:前i件物品,体积为j的最大价值。2)不拿:dp[i][j]从dp[i-1][j]转移过来。边界:dp[0][…对代码进行优化:滚动数组优化。
2025-03-13 21:03:46
563
原创 蓝桥杯Python动态规划(四):最长公共子序列(LCS)
状态:dp[i][j]:a数组前i个,b数组前j个的最长公共子序列长度。边界:dp[0][0]=dp[…][0]=dp[0][…给定一个长度为n的数组a和长度为m的数组b,求最长公共子序列。在上边代码后加上下边的代码,可以输出最长公共子序列。公共子序列:数组a和b中均包含该子序列。
2025-03-13 19:47:23
305
原创 蓝桥杯Python动态规划(三):经典动态规划问题最长上升子序列(LIS)
dp[i]=max(dp[j]+1) 条件:j<i,a[j]<a[i]子序列:原序列通过去除某些元素但不破坏余下元素的相对位置而形成的新序列。这种状态没有办法实现状态转移,因为不知道具体的序列是什么。状态是什么:假设状态是前i个数字的最长上升子序列。定义状态是:以第i个数字结尾的最长上升子序列。给定一个长度为n的列表,求出最长上升子序列。
2025-03-13 18:23:09
243
原创 蓝桥杯Python动态规划(二):二维DP
二维DP和普通DP本质都是一样的,只是状态的维度变成了二维,即需要两个变量来定义子问题。二维DP的更新可能会存在部分优化:前缀和、滚动数组。对代码进行优化(滚动数组)
2025-03-13 17:23:40
165
原创 蓝桥杯Python动态规划(一):一维DP
无后效性:“未来与过去无关”,直接利用结果计算,不必考虑前n-1,n-2级台阶的走法,最优子结构满足无后效性。子问题:n-1个台阶的上楼方案数,n-2个台阶的上楼方案数,n-3台阶的上楼方案数…例子:楼梯上有n个台阶,每次可以一步上1阶或2阶,一共有多少种不同的上楼方案?容易得出:要走到第n级台阶,要么从n-1级台阶走一步,要么从n-2级台阶走两步。最优子结构:大问题的最优解包含小问题的最优解,通过小问题可以推导出大问题。扩展:楼梯有n个台阶,每次可以上1阶、2阶、4阶。原问题:n个台阶的上楼方案数。
2025-03-13 15:22:24
210
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1