自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(14)
  • 收藏
  • 关注

原创 AcWing 4262.空调

我们知道,如果要想对一个数组的某个区间进行加减操作,最方便的方法是利用差分。那么我们一个最简单的直觉就是求出所有正数的和,即为操作的次数。我们知道,每当进行一次差分操作,就必有一个差分数组的元素。所谓差分,就是利用原数组构造一个数组,使其满足。数组,并求这些操作所需要的最少操作次数。这样上面的操作就等价于求出从。粗看本题,大概意思就是让我们对。数组进行变换,让其同时减去一个。这样原问题就等价于求出对。数组所需要的最小操作数。数组所需的最小操作数了。且必有一个差分数组的元素。数组进行差分操作得到。

2024-03-08 20:55:43 1434 1

原创 AcWing 5268.最短距离

如图,1和2的距离为0,但是不属于同一类,此时就可以将这两类合并。这是因为,1和3为同一类,3到1的距离为0,那么3到2的距离就也为0。同理,2类内的每一个点到1类内的每一个点的距离也为0。如果要是两个点的距离为0,那么就说明这两个点属于同一类。假如将所有距离为0的点合并为一个集合,那么就可以用并查集处理。考虑在合并距离为0的点之后利用一次Floyd算法,计算出类与类之间的最短距离。

2023-12-04 11:45:47 34

原创 AcWing-Linux基础课-7.管道、环境变量与常用命令

当某个可执行文件同时出现在多个路径中时,会选择从左到右数第一个路径中的执行。上面的代码用于寻找当前目录下的.py文件并将其用回车分割成命令行参数,最后统计文件中的代码行数。real是真实的完成的时间,但是其中可能有一部分时间不在执行命令,可能被操作系统挂起。用于指定动态链接库(.so文件)的路径,其内容是以冒号分隔的路径列表。当我们修改动态链接库里面的内容时,不用重新编译可执行文件,方便修改。Python导入包的路径,内容是以冒号分隔的路径列表。存放Java导入类的路径,内容是以冒号分隔的路径列表。

2023-11-24 11:15:20 56 1

原创 AcWing 1264.动态求连续区间和(树状数组和线段树)

线段树是一种数据结构,它利用了二分的思想,不断地将某一个区间分成两个子区间,直到分成的子区间只有一个元素为止。而传统的前缀和思想是将所有操作执行完之后再求取某个区间的区间和。相比于传统前缀和,树状数组可以边修改数组的元素边查询区间和。而如果使用树状数组或线段树,则时间复杂度为。这里的动态指的是可以在某个位置修改元素的值。线段树可以有多种用途,它可以被用于求。,因此如果使用前缀和,则时间复杂度为。树状数组是一种数据结构,主要是为了。求取某个区间和(前缀和)。用来存储线段树的区间。的最大值,区间的和…

2023-11-20 20:36:31 40 1

原创 diffusion model的概率学原理

本篇文章是学习的笔记。

2023-11-19 20:45:50 52

原创 AcWing 1241.外卖店优先级

假如我们不每个时刻都衰减没有订单店铺,而是等到该店铺出现订单时,我们再比较他上一次拿到订单的时刻和本时刻的差距,一次性衰减两个时刻内所有没有订单的时刻。是否大于1,如果大于1,那么说明两个时刻之间出现了空,需要进行衰减。,则说明在某一时刻到T时刻之间有没有接到订单的时段,需要进行衰减。的时候都需要枚举每一个订单和店铺。由于我们只枚举每个时刻的订单,因此算法的时间复杂度为。首先用一个结构体存储每一个订单的店铺号和时刻。然后根据订单的时刻和店铺号按从小到大排序。表示第k个店铺上一次接到订单的时刻。

2023-11-17 21:27:51 18

原创 AcWing 149.荷马史诗

构成的两种哈夫曼树,可以看出,上面的哈夫曼树的权值明显大于下面的。在k进制中,如果依然按照二进制哈夫曼树的合并规则,先合并最小的k个节点,那么一直合并到了不足k个节点的时候,最后一次合并就会出现缺漏,这时的k叉哈夫曼树就不是最优哈夫曼树。为0,那么也就是说此时我每次合并的时候都能合并k个点,这个时候状态是最好的。题目中要求编码长度最短和最长的编码的长度最短,也就是要求哈夫曼树的权值之和以及最深的深度最短。而且优先队列的排序方式要按照先比较权值,权值小的排前面,权值相同的比较子树的深度。

2023-11-15 21:51:23 37 1

原创 AcWing 1214.波动数列

都有可能是负数,而数组下标只能大于等于0,因此在取模的时候要注意是结果必须大于等于0。个操作下,如何组合使得数列之和与。通过以上的分析我们可以知道,当第。时,满足题意的方案只有一种,就是。这其实是一个组合问题,在。,因此本题的时间复杂度差不多。上述左端的式子刚好为考虑。(2)关于初始化的问题,当。假设数列的第一个数为。次操作之后数列的和。

2023-11-14 20:56:34 35

原创 AcWing 1212.地宫取宝

应该比最小的宝贝的价值小,也就是比0小。这样如果下一个宝贝的价值为0的话才能取到,否则如果此时。,这样宝物的最小价值就为1,可以让0表示比最小价值还小的值。因此本题可以考虑用一个四重循环的dp解决。,那么下一个宝贝的价值如果为0就取不到。由于-1超过数组的下界,因此对于输入的。时,小明没有取任何宝物,所以此时。这个位置的宝贝和不取的选择。也要有所处理,将其范围变成。的位置,这个时候就有取。

2023-11-14 10:32:03 46

原创 AcWing 1205.买不到的数目

的形式应该相同,因此变形一下就是。每增加1,结果都会增加3。大,那么说明这个数就可以被。,那么一个数只要它不能被。组合而成,因此就没有解。每增加1,结果都会增加2。因此得出规律,结果应该是。,带入一下数字可以求得。整除,那么它就不能被。

2023-11-12 10:42:23 40 1

原创 AcWing 5271易变数

假设一个二进制数1101,我们可以从它的最高位开始枚举,假如当前位为1,那么这一位就有两种可能,如果为0,就只有1种可能。存储当前这一位之前的所有1的个数,枚举后面所有可能填数的情况,这个时候我们之前算的组合数就用上了。的时候,因为只有1操作0次为1,而且不管n输入多少,区间总会包含1,因此直接输出1即可。假如当前位为1且我们枚举的时候让其为0,那么后面的数我们就可以随便填而不会超过。表示可以随便填的位数,那么整个数的1的个数就是。表示后面可以随便填的数中1的个数,的二进制数中1的个数。

2023-11-08 21:35:21 27

原创 AcWing-Linux基础课-6.thrift

本次课主要通过实现一个游戏匹配系统来学习thrift。

2023-11-07 10:46:41 46

原创 AcWing-Linux基础课-5.git

我们每次的改动会由工作区传给暂存区,当我们想创建一个新版本时就由暂存区移至版本库。每次创建完一个版本之后head节点就后移,并且将新版本插入版本结构。我们之前已经在本地创建了一个project项目了,所以点取消。添加完之后可以在隐藏目录下看到.gitconfig文件。首先添加自己在ACgit上注册的用户名和邮箱。打开之后可以看到刚刚添加的用户名和邮箱。创建一个ACgit用户,并打开我的项目。接下来创建一个新的项目project。查看当前文件和暂存区的文件的区别。添加完成之后打开刚才创建的项目。

2023-11-01 17:39:41 426 1

原创 AcWing-Linux基础课-4.ssh

配置完免密登录后,输入如下代码即可在服务器执行命令。在config文件写入如下内容。创建config文件。

2023-10-31 17:05:18 172 1

空空如也

空空如也

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

TA关注的人

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