自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【树状数组】

树状数组的最大优点是可以将数组的单点修改和区间求和的时间复杂度同时降低。构建树状数组过程:假设一数组arr={1,2,3,4,5,6,7,8}对其进行以下处理:将数组中每两个数的和加起来,在依次向上加,就得到了如上图的树状结构,这是如果我们要计算区间[3,7]的和只需用下图中橙色色部分减去蓝色部分即可:仔细观察可以发现无论计算前几项的和都于上述数组中的偶数项没有关系。

2024-03-10 22:29:59 1709 1

原创 前缀和、逆元、费马小定理、快速幂

首先我们要计算前缀乘积数组s[i],我们可以用 s[r] 表示从 第 1 个元素到第 r 个元素的乘积,用s[l-1] 表示从第 1 个元素到第 l-1 个元素的乘积。有数组a[i]和是s[i],其中s[i]中的每一项均为a[i]数组中第一项数据到a[i]的累加和,则s[i]即为a[i]的前缀和数组,本题中使用的是前缀乘积数组。接着我们需要计算逆元:区间 [l, r] 的乘积为 s[r] 除以 s[l-1],即s[r] * inv(s[l-1])。其中p可取任意质数,满足 x 和 p 互质,这里取2。

2024-02-27 20:24:34 1770

原创 KMP算法(Java)

KMP(Knuth-Morris-Pratt)算法是一种用于字符串搜索的高效算法,典型的应用场景是在一个文本字符串中查找一个模式(或子字符串)的出现位置。它的效率之所以高,是因为它能够在不回溯文本字符串指针的情况下,通过预处理模式字符串来有效地跳过字符。

2024-02-25 17:10:21 1621

原创 【洛谷B3703】新年快乐

要过春节了,扶苏收到了她的新年礼物:一个崭新的字符串。扶苏收到的字符串是一个只含小写字母的字符串 s。对于一个长度为 的只含小写字母的字符串 ,我们定义 的『上一个字符串』是:将所有的长度为x且仅含小写字母的字符串按字典序排列后,恰好排在 之前一个的字符串。例如,字符串bcd的『上一个字符串』是bcc,而aaa的『上一个字符串』不存在。现在,扶苏有 次询问,每次询问给出一个区间 [l,r],查询: 的第l个到第r个字符组成的字符串的『上一个字符串』是否在 中出现?

2024-02-10 21:32:39 506 1

原创 【洛谷】木材加工(TreeSet)

博艾市有一个木材厂,里面可以存储各种长度的木材,但是保证没有两个木材的长度是相同的。作为厂长,你有时候会进货,有时候会出货,因此需要维护这个库存。有不超过100000 条的操作:进货,格式1 Length :在仓库中放入一根长度为Length(不超过)的木材。如果已经有相同长度的木材那么输出。出货,格式2 Length :从仓库中取出长度为Length的木材。如果没有刚好长度的木材,取出仓库中存在的和要求长度最接近的木材。如果有多根木材。符合要求,取出比较短的一根。

2024-02-10 20:57:15 328 1

原创 【洛谷】P4715淘汰赛(线段树的构建)

如上图,要确定8个国家谁是亚军,首先将1~8的国家分为1~4和5~8的国家,然后1~4的国家和5~8的国家再分,直到分为单个国家为止,对于单个国家自己就是冠军,对于两个国家谁的能力大谁就是冠军,依次再向上推,直到确定出最终的冠军。本题的关键在于线段树的构建,线段树本质上是一颗二叉树,其中每个节点代表一个区间,对于给定的区间[L , R],一般情况下如果父节点代表区间[L , R],那么它的两个子节点分别代表区间[L , (L+R)/2]和[(L+R)/2 +1 , R],叶子节点代表区间中的单个元素。

2024-02-08 20:38:00 410

原创 并查集(谁是我的亲戚)

以本题为例,首先初始化所有人的祖先是自己即pre[i] = i,若a与b为亲戚则将他们加入同一家族,并令b为a的祖先即pre[a] = b(这里可以随意指定并不影响最终的判断结果)。(1,5):1的祖先是2,5的祖先是5,令5为2的祖先即pre[2] = 5;(3,4):3的祖先是3,4的祖先是4,令4为3的祖先即pre[3] = 4;(1,2):1的祖先是1,2的祖先是2,令2为1的祖先即pre[1] = 2;(1,3):1的祖先是5,3的祖先是4,令4为5的祖先即pre[5]=4。

2024-02-05 23:14:33 358

原创 邪恶草料的入侵(Java)

(2)将初始节点从队列中取出,依次判断其八个方向是否可以入侵,入侵后将入侵的位置坐标以及对应的周数入队列,所有方向判断完成之后再从队列中取出元素继续判断其八个方向是否可以入侵,以此类推知道队列为空即可。每周,邪恶草料传播到任何其已经占领的方格周围的所有非岩石方格,最多为八个方格(包括直 角和对角线方向的方格)。邪恶的乳草已经在他的农场的西北部份占领了一片立足之地。每个星期,邪恶 草料传播到已被该草料占领的格子四面八方的每一个没有很多石头的格(包括垂直与水平相邻的和对角 在线相邻的格)。坐标网格一样排列)。

2024-02-03 20:27:47 789 1

原创 种树问题(Java)

双向链表、优先队列、反悔贪心

2023-01-21 20:37:32 401

原创 k皇后问题详解java

k皇后问题java图文解析。

2022-11-18 12:12:40 233

空空如也

空空如也

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

TA关注的人

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