自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

chp的博客

RL小白

  • 博客(175)
  • 收藏
  • 关注

原创 python画图默认颜色

【代码】python画图默认颜色。

2024-04-08 13:53:56 192

原创 AcWing 851. spfa求最短路&&AcWing 852. spfa判断负环—spfa算法

spfa算法是对bellman-ford算法的改进,bellman-ford算法比较笨,要遍历所有边来更新,其实如果当前点没有被更新的话,就不用用当前点来更新他所连接的点了。我们只需要每次更新一个点后,继续更新该点连接的点即可。正如bellman-ford算法中提到的,一个点到其余点的最短路径,最长需要经过n-1条边,所以如果有大于等于n条边,则说明一定有环。注意从单元点出发,有可能找不到环,因为环不一定在最短路径上。

2024-01-06 15:29:01 509

原创 AcWing 853. 有边数限制的最短路—bellman-ford算法

优秀的地方,但是要注意的是能解决带负权边的最短路问题,如果负权边构成了负权回路,那就有可能求不出来了。需要注意的是,我们可以把n轮更新,理解为,1号点经过不超过n条边到达其余点的最短距离。bellman-ford算法可以用来解决带负权边的最短路问题,这是相比于。另外我们可以发现,在无环的情况下,1号点到其余点最长需要经过n-1条边。bellman-ford算法的主要思想是做松弛操作,类似于。如果需要要求边数为k,则遍历k轮即可。轮松弛操作,每次遍历。

2024-01-06 14:29:31 337

原创 AcWing 861. 二分图的最大匹配—匈牙利算法

接着为2寻找匹配,2可以匹配a,c,首先与a进行匹配,发现a已经被1号匹配了,那么就看看能否再为1号找到一个新的匹配,发现可以为1号找到新的匹配c。1号还能与a匹配,但是a被2号匹配了,于是寻找2号能否匹配(从b中选),发现可以为2号寻找到新的匹配,于是为3号找到了匹配。接着为3寻找匹配,3号可以与c匹配,但是c被1号匹配了,于是寻找能否为1号寻找其他的匹配(从a,b中选)首先为1寻找匹配,1可以匹配a,c,1首先和a匹配。接着为4寻找匹配,发现无法为4寻找到新的匹配了。所以该图的最大匹配数为3。

2024-01-05 12:33:48 339

原创 AcWing125. 耍杂技的牛(贪心+推公式)

类似于冒泡排序的思路,可以用贪心的思想来找到该问题的一个最优解,就是按照。这是一道贪心问题,我们假设牛最终的摆放顺序(从上大小)为。的位置,后所有牛风险值的最大值不会变大。的位置,后所有牛风险值的最大值会变小。首先,可以容易想到交换两头牛。从小到大的顺序从高往低摆放牛。所以,存在相邻的两头牛。,当存在相邻的两头牛。

2023-12-23 19:56:29 926

原创 学算法常用刷题网站

北大报送生,NOI金牌得主—yxc创办。: 杭州电子科技大学的在线评测系统。: 简称CF,俄罗斯的网站。: 北京大学的在线评测系统。:用户可以自己举办比赛。:找工作刷题必备网站。

2023-12-12 21:05:30 808 2

原创 强化学习—(最优)贝尔曼方程推导以及对(最优)动作价值函数、(最优)状态价值函数的理解

这里的大写字母代表具有随机性,小写字母表示已经被观测,没有随机性。能得到的价值中最高的,因为我们的策略是最优的。能得到的价值,这个价值一定是各种策略下在状态。求期望,消除了这些状态和动作的随机性。表示当前的策略是最优的情况下,在状态。表示在最优策略下,最高的最优动作价值。的好坏,算期望消除了动作的随机性。的确定函数(最好的那个动作),所以。有关,动作价值函数是回报的期望。有关,是用来评估,在当前策略。是 reward:奖励,,讲的很好,通俗易懂。

2023-07-30 16:06:08 556

原创 AcWing 1275. 最大数—线段树单点修改

拿区间[1,10]举例,可分为如图所示的小区间,由于这里和堆很像,所以也是用数组来存所有的点,最多不超过4n个区间。能使用线段树的题有一些特点,就是大区间的属性能从小区间得到,比如求max,max([1,10])=max{max([1,5]),max(6,10)},线段树一共有4个基本操作,分别是。线段树是以区间来考虑问题,保存的基本信息有区间的左边界、右边界、区间的属性(sum、min、max…:由两个子区间更新父区间,例如max([1,10])=max{max([1,5]),max(6,10)}

2023-07-25 17:01:24 148

原创 AcWing 244. 谜一样的牛—树状数组、二分

树状数组用来求前缀和sum(x),二分求解最小的数x,使得sum(x)==k,那么x就是当前第k小的数,然后让f[x]-1,再找下一头牛的高度。这道题挺巧妙的,感觉树状数组方面的题就是比较难想,先分析一下样例,样例中每头牛前面比自己低的牛的数量分别为。牛的高度是1~n的排列,如何分析出每头牛的高度呢,可以考虑从后往前分析。现在每头牛高度的可能性为1,2,3,4,5。每头牛高度的可能性为 2,3,4,5。每头牛高度的可能性为 2,4,5。每头牛高度的可能性为 2,4。每头牛高度的可能性为 2。

2023-07-23 18:58:13 137

原创 数据结构—树状数组

树状数组初学起来还是比较难以理解,过弄明白之后代码就很好写了,树状数组相当于是拿空间换时间,原数组为。(将a[i]变成b,就相当于a[i]+b-a[i],更改操作可以转换成+操作)都需要更改其对应的。树状数组是用来快速求前缀和的,传统的单点修改、区间查询要么单点修改的复杂度是。,树状数组相当于一个比较综合的算法,树状数组的查询时间复杂度和修改时间复杂度都是。下面这张图基本上是讲解树状数组必用的一张图。这是查询操作,我们还需要修改操作,每次修改。有一道树状数组的最经典例题可以做一下,假设我们已经维护好了。

2023-07-21 14:36:21 132

原创 AcWing 239. 奇偶游戏—带边权并查集、带扩展域并查集解法

这道题比较有意思,可以由前缀和的思想来解决,[l,r]为偶数,说明[0,l-1]和[0,r]的奇偶性相同;[l,r]为奇数,说明[0,l-1]和[0,r]的奇偶性不同;扩展域的解法我是第一次遇到,大致的思想就是用并查集维护条件,当其中一个条件成立,那么集合中所有条件都应该成立。是一种带边权的并查集,维护当前节点相对父节点位置即可,食物链那道题有三种情况,同类、吃、被吃,这道题只有两种情况,奇、偶。原数据的范围是[0,n],开辟一个新的空间(域)来表示不同的情况。举个例子,假设题目中x,y的范围

2023-07-20 11:27:11 101

原创 AcWing 105. 七夕祭—数学推导、贪心

其次,我们可以发现,我们在行上调整某个摊位,不会影响该摊位所在列的摊位数量,比如摊位 x 的位置为(x,y),上下调整到(x+1,y)、(x-1,y)不会影响对这一列的摊位数量有影响,同理我们在列上调整某个摊位,不会影响该摊位所在行的摊位数量。所以我们的目标最小的交换次数就等于最小在行上面的交换次数+最小在列上面的交换次数。首先,如果想要做到每行的摊位数都一样,那么总摊位数一定是行数的倍数(0倍也行),同理如果想要做到每列的摊位数都一样,那么总摊位数应该是列数的倍数。可以发现,在行/列上,这是一道。

2023-07-17 11:12:12 130

原创 AcWing1536. 均分纸牌 && AcWing122. 糖果传递—数学推导、贪心

A2的纸牌只能从A3获取,或者给A3不能从A1获取,或者给A1,因为A1==avg,这样做会使得操作重复(A1就是通过A2来达到avg的),这样我们就能知道当前的数Ai要通过Ai+1来达到avg。这道题看起来和上面的题很像,其实题意确实差不多,区别就是上一道题的两端和这道题的两端不同,这道题是一道环型均分纸牌问题,虽然改动了一点,但是解法却完全不同。,an从a1获得x1,其中x2,x3,…这道题有个特殊的地方就是A1只能从A2获取纸牌,或者A1只能将多余的纸牌给A2,此操作后A1的纸牌数应该为avg。

2023-07-16 16:09:18 382

原创 AcWing 106. 动态中位数—对顶堆

这道题应该用树状数组、平衡树也能解决,这里用对顶堆来做,对顶堆能够用维护第。是固定的,在这道题中,维护两个堆,一个大根堆一个小根堆。

2023-07-15 17:10:07 165

原创 AcWing 107. 超快速排序—逆序对

我们思考冒泡排序在什么情况下会交换两个相邻的数,目标是升序序列时,当f[i]>f[i+1]时,会交换f[i]与f[i+1],交换后可以发现f[i]的逆序对数量减少了一个,所以就能往这方面想,最后可以发现逆序对的数量就是需要交换的最少次数。,但是主要是如何分析问题,如何能从问题中看出来和逆序对数量有关,现在的题目基本上很少是那种模板算法题了,更注重思维,所以一定要培养好思维,模板只是基础。思维很重要,或者说在熟知算法模板的情况下,更重要的就是思维了。这道题考查的算法不难,就只是利用。

2023-07-14 16:14:00 416

原创 AcWing 1273. 天才的记忆—RMQ

举个例子,比如区间[1,5]长度为6,那么k=2小区间的长度为4,第一个小区间是为[1,4],第二个小区间为[3,6],这两个小区间刚好完全覆盖大区间[1,5],所以在这两个小区间中取一个max,就得到了大区间的max,这样就能在。是用来求解静态区间最大/小值的算法,静态空间就是数组里的数不会变,动态空间最大/小值可以用。我们可以将这个区间分成两小,第一个小区间是从l开始,长度为。来求这个区间的最大值呢,因为这个区间长度也不一定是。,下面讲解一下这个算法步骤,做过。,第二个区间是从r结束,长度为。

2023-07-13 20:42:27 182

原创 AcWing 113. 特殊排序—无传递性大小关系二分

这道题可以用二分来解决,因为最多能进行10000次询问,所以询问的时间复杂度应该为。,就是用归并排序来做,我们可以发现归并排序也不需要传递的大小关系。,这道题说大小关系不具有传递性,这是什么意思呢?还有种更简单的做法,而且时间复杂度是。因为类似插入排序,插入算法是。这样的情况也是能进行二分的。这代码的时间复杂度是。

2023-07-12 14:17:41 187

转载 MultiHeadAttention的代码实现

也可以用使用pytorch自带的类。

2023-07-10 22:08:42 784

原创 AcWing 102. 最佳牛围栏—二分

那么前缀和(>=f个数)的值大于0即可,如果不让每个数减去。这道题还是挺精妙的,分析没看懂可以看代码,应该比较容易理解。是否能取到就行,这里有一个巧妙地方法,我们让每个数减去。这道题是一道比较巧妙的二分+前缀和问题,首先数据有。考虑以某一个位置(>=f)为结尾位置的最大。从小到达遍历,所以可以记录下所有。这里考虑二分方法,二分可能的。是可行的,二分的时间复杂度为。,重点是如何判断当前的。暴力枚举肯定行不通。这表示能够得到当前的。,所以只需要求最小的。

2023-07-07 12:46:42 128

原创 AcWing 98. 分形之城—递归、分治

这是一道递归+坐标变换的问题,坐标变换比较难想,建议自己动手画一画容易明白一些。这一道题看起来很麻烦,其实就是比较麻烦。与总点数的关系,不难发现总点数。构成的规律,第1部分是关于。,同时可以发现,每个等级由。个区域的情况递归子问题即可。的城市构成,将每个等级为。个,观察可以发现城市由。相同,第4部分是关于。分别考虑当前点在城市的。

2023-07-05 15:43:20 97

原创 AcWing 97. 约数之和—算数基本定理、递归

是否是mod的倍数,这种情况就比较麻烦,如果题目比较友好,直接用公式+需要通过算数基本定理来解决问题,任何正整数。会超时,所有这里考虑用递归分治的方法来算。可以发现后一半每一项都是前一项对应位置的。为奇数,我们把这个写成整除的形式就是。就变成了奇数项,可以按照(1)来求,质因子分解,将质因子的指数再乘上。其实之前考虑的是用等比数列的公式。那么现在的问题就变成了如何快速求。一共有a_n+1,为偶数项,很大,考虑用递归分治来做,和逆元来算,但是需要判断。,但是有个问题,这里的。的范围较大,如果遍历算。

2023-07-04 15:33:21 108

原创 快速幂与64位整数乘法(位运算)

大数乘法与快速幂的思想类似,都需要转化为位运算,快速幂需要用到位运算的思想,求。转换成二进制的形式,假设。

2023-07-03 12:07:37 116

原创 状态压缩DP—最短Hamilton路径

【代码】状态压缩DP—最短Hamilton路径。

2023-06-26 11:27:13 85

原创 状态压缩DP—蒙德里安的梦想

【代码】状态压缩DP—蒙德里安的梦想。

2023-06-25 15:44:21 75

原创 数位DP—计数问题

【代码】数位DP—计数问题。

2023-06-23 16:22:14 83

原创 高斯消元法解线性方程组

【代码】高斯消元法解线性方程组。

2023-06-21 13:29:20 151

原创 逆元(费马小定理、扩展欧几里得、逆元线性打表)

当p为质数时,且a不为p的倍数(a,p一定互质),那么可以用费马小定理来求解,费马小定理指出。当p不为质数,但是a,p互质时(不互质逆元不存在),可以根据欧拉定理来求逆元,欧拉定理是对。(a - b) % p = (a%p - b%p) %p (对)(a / b) % p = (a%p / b%p) %p (错)(a * b) % p = (a%p * b%p) %p (对)(a + b) % p = (a%p + b%p) %p (对)

2023-06-14 14:49:29 653

原创 线性DP—最短编辑距离&编辑距离

这道题可以用线性DP来求解,线性DP的特点是每次只需要考虑最后一个状态。

2023-06-10 14:10:59 44

原创 线性筛法求欧拉函数

的,大概率是过不了上面的问题,这里我们考虑用线性筛来求欧拉函数。如果用筛质数的方法,单独求某个数的欧拉函数,时间复杂度应该是。关于线性筛可以看我的。

2023-06-05 19:31:26 59

原创 筛质数—(埃氏筛&欧拉筛)

对欧拉筛的理解不是很深刻,写下自己的理解,加深一下理解,也方便后期忘记后再学习。

2023-05-30 21:37:16 460

原创 动态规划之—状态机模型(股票买卖 IV、股票买卖 V)

这道题没有交易次数的限制,但是有了冷却时间,我们需要添加一维来表示冷却时间。首先画出状态机模型,有两种状态:手中有货和手中无货,手中有货可以继续保持,或者卖掉。手中有货可以继续保持,或者买入。

2023-04-24 14:49:18 228 5

原创 动态规划之—状态机模型(大盗阿福、没有上司的舞会)

这种需要向前看两步,所以为了方便我们遍历从2~n+1。这是一道比较简单的动态规划—状态机的问题,可以用。的思想或者DP状态机的思想来做。DP状态机来表示状态一般比较清晰。

2023-04-23 16:53:48 129

原创 多重背包问题的三种解法(转化为01背包、二进制拆分、单调队列优化)

这里考虑用单调队列优化,首先分析01背包与完全背包,进而推导出多重背包的单调队列优化。这时直接拆分为s份,转化为01背包问题求解会超时,考虑二进制拆分,二进制拆分参考。可以转化为01背包问题求解,将s个物品都看作单独的一个物品,时间复杂度为。

2023-04-21 16:39:05 814

原创 最长公共上升子序列LCIS

我们考虑对代码进行优化,可以在第二层循环中顺便求出A[i]>B[k]的最大值。由上面的这两个,我们来写最长公共上升子序列。

2023-04-19 12:39:18 183

原创 拦截导弹 & 导弹防御系统

第二个问题,可以用贪心的思想来做,每次新到的导弹,我们用当前导弹高度恰好大于等于该导弹高度的导弹系统去拦截,这样所用的导弹系统的数量是最少的。**分析:**这道题稍微复杂一些,因为有两种拦截导弹的可能,由于数据范围较小,可以直接暴力枚举每一种可能,第一个问题为输出最长递减子序列,由于导弹数在1000以内所以采用时间复杂度为。我这里求最长上升子序列和贪心的时间复杂度都为。** 代码如下:**

2023-04-17 10:34:38 3290

原创 Pytorch搭建网络训练葡萄酒分类数据集(三分类)

Pytorch搭建网络训练葡萄酒分类数据集(三分类)

2023-03-02 20:58:27 620

原创 Pytorch中常用的损失函数

Pytorch中常用的损失函数

2023-03-02 19:42:53 468

原创 Pytorch搭建神经网络的小案例

Pytorch搭建神经网络的小案例

2023-03-02 11:02:56 197

原创 表格形式的Q_learning算法+经验回放

表格形式的Q_learning算法+经验回放

2023-03-01 10:28:31 195

原创 表格形式的Sarsa与Q_learning算法

表格形式的Sarsa与Q_learning算法

2023-02-28 20:31:17 235

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除