自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 P4587 FJOI2016 神秘数

[可持久化线段树]]思路:假设[1,x]是满足我们要求的区间,那么当插入一个元素y是会出现两种情况。

2025-11-03 10:56:04 221

原创 P4592 TJOI2018 异或

在我们树链剖分时,我们会按照根节点,重儿子节点,轻儿子节点顺序遍历,那么,我们在添加节点的时候,我们也优先按照根节点,重儿子节点,轻儿子节点的顺序添加节点.我们可以在树剖时候,可以将每次添加节点的顺序记录出来,比如添加的节点为2,这是我们添加的第i个,我们就定义一个数组a[i]=2,再添加一个数组b,可以用来记录节点2对应的i值.之后,在插入构建root时就按照添加的顺序来。这题看了好久,一直在不理解构建树链剖分的作用,以及构建可持续字典树的作用卡壳.我们假设 1,2,3…1,2,4为一条重链。

2025-10-31 20:59:24 283

原创 可持久化线段树 洛谷p3834

当我们查找区间的第k大值,我们就可以通过区间的个数,进而查找我们需要的值,比如第2大,[1,2],[2,2],可持久化线段树在此基础上,添加了另外一个功能(支持回退),想要保存之前的状态,就需要我们每次插入时就开一个线段树,但是,内存空间消耗过大,会导致爆掉(4n*n),因此,我们可以通过添加编号的方式,每次增加一个值,我们就将改变的区间添加一个新的节点id,新的节点id,我们让这个新的节点等于老的节点,再让新节点继续往下遍历,这样我们通过只改变区间变化的id,就可以避免多余的节点被创造出来.

2025-10-29 08:22:52 406

原创 P4735 最大异或和

建议观看视频,董晓老师的讲解很清楚。

2025-10-29 08:21:31 126

原创 P5283 十二省联考 2019 异或粽子

本题相当于计算查找k个(i,j)的异或值最大的范围的总和.与计算最长异或路径的思路很像,建议先写那道题.首先,我们再计算一条最长路径的时候,由于我们是将每一条路径都单独拿出来进行异或计算,所以,假设我们计算i,j的路径是最长的,我们会最终计算两遍,从1->i开始遍历时选择1->j这条路,而1->j开始遍历时同样会计算1->i这条路,所以一条最长路径会被计算两边(将。

2025-10-18 17:16:13 297

原创 P4551 最长异或路径

题目这道题上一年写过,但是现在还是忘记了思路,现在重新看了下题解,又明白了思路:树的边是两端连接的,也就是说任意两个点都可以间接或直接相连,那么,我们将每一个点到根节点的异或结果汇聚到一个树上,比如41 2 32 3 42 4 61->2 3 00111->3 7 01111->4 5 0101接着,我们可以将每一个从根节点到叶子节点的结果,从最顶端开始,优先寻找与他异或为1的节点(最顶端的权重大),异或为1,我们就将该权重加起来,然后往他的子字节的过度,同样

2025-10-18 10:52:24 227

原创 P2572 SCOI2010 序列操作

算法/线段树思路:首先,根据题意,我们起码要定义一个s,代表1总和,mx代表区间连续1的值然后我们再考虑如何反转,当我们反转的时候,我们可以理解成0的总个数变成1的,连续0的最大个数与连续1的最大个数反转,所以为了方便计算,我们可以将0和1的s,mx都计算出来,在我们计算区间连续的值时,我们是拆分成左区间右区间进行判断的,所以我们还需要判断左右区间相邻的两个位置的值是否相同.我们也将0/1都计算出来.因此,我们定义结构体在我们以0开头的个数时,会出现左半区0的个数等于区间范围,

2025-10-14 21:27:51 175

原创 P5522 yLOI2019 棠梨煎雪

每查找一个区间,我们就先判断是否存在sum和d1的合并是否有为1(二进制)的位置,如果存在那么,我们再遍历每一个位置,如果一个位置,我们已经确定是唯一的值,且正在判断的这个区间的这个位置也是唯一的值,我们再判断这两个位置的是否相同,如果不同,我们就直接判断出这个区间不存在满足的字符串,如果相同,我们将ans与这个区间合并.我们可以运用二进制表示每一位状态,我们定义一个区间,这个区间代表一个字符串,在字符串上,每一个字符串的位置有4种情况,0或1或?首先定义一个数组d1,用来表示这一段区间内,字符串上不为?

2025-10-12 17:07:48 282

原创 洛谷P1637 三元上升子序列

我们将每一个位置的值转换成树状数组的下表,在计算比他小的个数时,每插入一个元素前,先进行一次查找,查找该下表前边的个数,查阅完后,插入该元素。查找比他大的元素个数我们只需反向插入即可.查阅时,将当前的个数减去比已经插入比他小的个数。将每一个位置比他大的和比他小的个数全部计算出来,将两者相乘。需要注意的是开long long。

2025-10-03 17:45:15 219

原创 洛谷P6492 COCI 2010 2011 6 STEP

更新左侧:先将区间最左侧的长度更新为左半部分最左侧值,然后,判断左侧值长度是否与左区间相同,如果相同,我们再判断中间两个的值是否相同,如果不同,我们再将左侧的值加上右半部分左侧的值。先将大区间的最长长度定义成左右区间的最长长度,其次,判断中间两个的值是否相同,如果不同,我们将左半部分最右侧的值加上右半部分左侧的最大长度,将相加的值再与最长长度进行比较。lans代表以左端为首满足要求的连续子串的长度。rans代表以右端为尾满足要求的连续子串的长度。ans代表区间满足要求的连续子串的长度。

2025-10-03 16:26:59 295

原创 P1471 方差

在构建线段树时候,我们可以构建两个数组,一个存取总和,一个存取平方和,进行区间加减时,只需对两个数组进行变化即可.好久没刷算法题了,现在生疏了好多。当我们对一个方差进行改变时。

2025-10-01 22:33:21 582

原创 计算机网络的性能指标和体系结构

传输速率:指连接到网络上的节点往数字信道上传送数据的速率(即每秒传送多少比特).也成为数据传输速率,比特率或者数据率.传播速率:电磁波在物理介质上速度(m/s)带宽:模拟信号中:某个信号所包含的各种不同频率成分所占据的频率范围.(HZ)计算机网络中:网络的通信线路所能传送数据的能力,即在单位时间内从网络中的某一点到另一点所能通过的最高数据率.(b/s)数据传(发)送速率=min{主机接口速率,线路带宽,交换机或者路由器接口速率}传输与传送传输=传送=发送类比:两端停车场,左边一次能进3

2025-09-25 22:28:21 760

原创 物理媒介和分组交换原理

通过固体介质,边界约束实现定向传输,抗干扰能力强,传输距离远,主要双绞线,同轴电缆,光纤.绞合的目的:抵消电磁干扰长距离布线需要放大器等设备来补偿信号的衰减,或者用中继器来对失真的信号进行整形.成本低廉由多层结构组成的导引型传输媒体核心结构由4层组成:1.内导体单股实心铜线或绞合铜线,负责传输电信号2.绝缘层聚乙烯或发泡聚乙烯,包囊内导体.隔离内外导体,防止短路.3.外导体屏蔽层金属网状编织层(或单股铜线).抑制外部电磁干扰(EMI),同时减少信号泄露.4.保护层(外护套)聚氯乙烯(PVC)或

2025-09-25 20:42:18 949

原创 计算机网络概述

当源端系统需要向目的端系统发送数据时,它不会一次性发送整个数据块,而是分割成的较小的数据块(成为数据段)来发送。语义:定义通信双方所要完成的操作,即需要发出何种控制信息,完成何种动作,做出何种应答.必须通过因特网服务提供商接入互联网(isp),我国的ISP主要有:中国移动,电信,联通。5G基站->波束成形信号->用户端5G CPE->无线路由器->家庭设备。终端用户->接入ISP->区域ISP->国家级ISP->第一层ISP。ONT光网络终端:用户端设备,将光信号转换为家庭可用的网络信号.

2025-09-25 20:40:37 440

原创 P1438 无聊的数列

按照普通的线段树,增删可以知道,我们对一个区间的操作是将这个区间的每个数都增删一个相同的值,那么,我们就考虑如何转换成对一个区间进行相同的数增删呢?根据题目要求,对一个区间进行等差数列运算,那么,这个区间,除了头部增加K,尾部的下一个减少K+(len-1)*D之外,其余的差分全部添加D,所以,我们就可以将区间的等差数列运算转换成线段树,之后在查阅位置pos的时候,将从第一个位置的值加到pos位置的值即可。

2025-05-29 10:21:42 201

原创 P3586 POI 2015 LOG

题目思路:对于Z c s 在这个序列上,每次选出 c 个正数,并将它们都减去1,询问能否进行s操作根据题目要求,我们可以将序列上的数分类,一类是已经满足Z要求,数量已经大于等于s个,一类是数量没有满足s个,如图,注意:1,2,3,4,5,6代表第几个,不是数量,并且假设每个数字都为一个小球对于满足s个的,我们直接计入到c个中即可,对于没有满足c个的,我们可以将他们合并在我们合并的时候,我们由于我们合并的种类都不满足s个并且,再合并的时候,不同种类的小球最少个数为sum/(s-1),如果sum>=(c

2025-05-28 17:29:09 327

原创 P2278 HNOI2003 操作系统

我们可以每次在存放下一个结点之前先对之前的结点进行处理,将队列里第一个结点拿出来,先判断当前时间是否到达队顶结点的开始时间,如果到达了化,我们就对队列里第一个结点进行处理,将他的处理时间减去我们可以处理的时间(处理时间为当前时间到达存放下一个结点开始时间的这段时间段和当前结点处理时间的剩余值,两者的最小值),之后再将当前时间加上处理时间,如果当前结点处理时间不为0了化,再将他处理后的结点重新放入队列中。首先根据题目,我们肯定是要将结点按照优先级和先后到达顺序进行排序。最后,对队列里的剩余结点再进行处理。

2025-05-28 15:18:53 179

原创 P2161 SHOI2009 会场预约

对于操作A,我们可以进行树状数组加二分,根据题目要求,A L,R 我们可以进行一个二分,寻找距离R最近距离r使得r为离R最近线段的L距离。我们再判断此时与r并行的R2是否大于L,如果大于,我们记入这条线段,并将这条线段删除,之后重复寻找点r,直到r对应的最右侧小于L。再记入tot直接表示总数,删线段tot–,加线段tot++;如果是B那么,直接进行query操作即可。进行二分了化,也需要注意-1,R+1区间。

2025-05-28 09:07:30 381

原创 P5677 GZOI2017 配对统计

算法/二叉堆与树状数组思路:根据题目,每次一个区间,从区间中寻找,因此,显然,我们需要用到线段树或者树状数组,那么,如何使用呢?再看题目要求∣ax​​−ay​​∣≤∣ax​​−ai​​∣i!x,我们可以知道每一对x,y都是距离x最近的点,再根据题目中的要求,每一个a都不同,所以,我们可以快速求出每一个x最近的点,但是,如何寻找题目中每一个区间内的配对数呢,这里,我们可以使用两个数组,一个表示以下标为开始的配对对数,一个表示以下标为结束的配对对数。

2025-05-28 08:31:20 342

原创 P2168 NOI2015 荷马史诗

算法/哈夫曼树。

2025-05-14 13:18:11 380

原创 P1801 黑匣子

最大堆就是用来维护n个小的数组,每当我们输入一个数时,就将数存储到最大堆中,之后将我们最大堆中的最大值删除,放入最小堆中.当我们此时输入的数字下标恰好是u[i],时,我们输出最大堆的堆顶.紧接着,我们需要维持一个n+1个小的最大堆,因此,我们在插入下一个数字之前,还需要将现在最小堆堆顶的元素放入最大堆中(最小堆的堆顶元素可能是第n+1个小的元素)假设现在有m个数被输入,需要我们寻找第n小的数。通过最大堆和最小堆的方法。

2025-05-08 20:37:38 240

原创 CF912E

我们可以将奇数位值得结果存在一起,在将偶数位的结果存在一起,这样就会得出两个集合,之后,我们二分一个数X,寻找集合A与集合B相乘小于等于X的个数,我们以第一个集合A为基准,每次查找集合B中,使得集合A的数乘上集合B的数小于等于X,每查找一个B,就将B的下标加起来,最终个数就等于所有下标的总和.这题看不懂题目什么意思,看了看题解求:在给定的集合中任选不限定个数,选择的数可以相同,求第k小的数,这里也可以什么都不选,什么不选的时候答案为1。如果总和大于k,就将右侧的边界放缩,如果小于k就将左边的边界放大。

2025-04-22 17:33:19 292

原创 docker基本命令1

将原来镜像实例化一个容器,对容器进行功能上扩展,再将容器制作成镜像。下载镜像Docker Registry。查看当前docker状态。查看镜像容器数据所在空间。docker帮助文档。列出本地主机上的镜像。

2025-04-21 18:32:58 231

原创 P3959 [NOIP 2017 提高组] 宝藏

其中,i代表深度,j代表状态,由于我们每次的状态都是由上一次的状态推导出来,所有这一层比上一层多余的状态(上一层没有被选,但这层被选的宝藏图)的消费就等于上一层到这一层的花费乘上深度.(乘上深度的原因是我们每一层的状态都是比从上一层推导而来的,所以,这一层的深度比上一层加1,那么,这一层新增的藏宝图到起点的距离也就比上一层多1)首先,我们看下数据,n最大为12,并且每两个结点都可以由上一个结点推出来,那么,我们可以考虑从状态压缩的角度考虑。

2025-04-21 13:40:07 334

原创 洛谷P1312 [NOIP 2011 提高组] Mayan 游戏

算法/进阶搜索思路:根据题意,我们可以知道,这题只能枚举,剪枝,因此,我们考虑如何枚举,剪枝.首先,我们要定义下降函数down(),使得小木块右移时,能够下降到最低处,其次,我们还需要写出判断函数,判断矩阵内是否有小木块没被消除.另外,我们还需要消除函数,将矩阵内三个相连的小木块清除,dfs()函数进行搜索这里,我们定义数组横坐标代表原矩阵的列,纵坐标代表原矩阵的行,坐标轴从1,1开始。

2025-04-19 18:36:25 309

原创 洛谷P1120 小木棍

首先,最初始想法,将我们需要枚举的长木棍个数计算出来,在dfs中,我们先判断,此时枚举这根长木棍需要的长度是否为0,如果为0,我们就枚举下一个根木棍,接着再判断,此时仍需要枚举的木棍个数是否为0,如果为0,代表我们这种方案可行,直接打印长木棍长度,接着我们再枚举每一根小木棍,将还没有访问的长木棍,以及长度小于还需要的长度的小木棍dfs下去。3.在我们枚举枚举短木棍时候,如果我们枚举上一根木棍的长度与此时准备枚举的短木棍长度相同,并且,上一根的短木棍方案不行,那么,我们无需再继续枚举这根小木棍.

2025-04-19 18:34:23 525

原创 洛谷P1763 埃及分数

3.定义左右区间,左区间等于上一层存储的数+1或者此时剩余的分子/剩余的分母+1,两者的最大值就是左区间,右区间的最大值需要我们计算:为了保证后序有解,我们需要保证此时层的最小值*层数大于剩余的分数,我们假设最小值是z,那么。首先,考虑dfs,bfs,dfs另现在搜索状态为搜索到第几个数,但显然,我们不知道还需要搜索多少棵树,因此,此方案不行,如果是bfs,同理,我们不知道还有多少个数需要搜索,因此,时间会太高,那么,我们考虑迭代加深.并且根据题目,我们需要y<=1e7,y过大,直接break。

2025-04-15 12:19:10 965

原创 【模板】缩点

【代码】【模板】缩点。

2025-04-11 09:29:25 418

原创 十三届蓝桥杯省赛A组 扫描游戏

r,那么,我们先判断左半部分的最小值tr[lc]是否<=val,如果不等于,我们就直接return query(rc,mid,r,mid+1,y,_int128 val);在query函数中,我们先判断当前的l,r是否就是x,y,如果是x,y我们再判断l是否等于r。1.x,y在l,r中间的左侧,y<=(l+r>>1),我们就返回l,r的左半部分。2.x,y在l,r中间右侧,x>=mid+1,我们就返回l,r的右半部分。如果l等于r并且,距离<=val,返回下标l或者r,否则返回-1。

2025-04-08 20:44:59 404

原创 深入理解计算机系统第一章

csapp深入理解操作系统

2025-04-03 14:41:44 878

原创 线段树,单点,区间修改查阅

首先关于树有许多类型,这里我们主要首线段树,整体思想就是将一个大区间进行拆分,拆分成各个小区间,在我们进行查找,更新时,就是对区间的查找更新。在我们的初始化当中,一定要根据题意,确定我们最开始要初始的值(我们假设我们求的是一个区间最小值,那么将每个区间都初始化为最大值)每次在进行左右区间(lc,rc)操作之前,先进行pushdown对,对lc,rc操作完毕之后再pushup。我们假设查找一个区间的最小值。这里,我们假设求最小值。我的算法都是在这儿学的。

2025-04-02 22:18:10 395

转载 欧拉函数证明

算法/数学推荐视频欧拉函数的性质若p是质数,则φxx−1若p是质数,则φpkp−1pk−1。

2025-03-31 16:04:20 70

原创 前缀和&差分

在我们对区间进行修改的时候,无论我们如何修改,一个区间都加1,除了两端以外,相邻的两个值得插值是不变的,因此,对区间的操作,可以改为对差分数组的操作,如果,我们想要将区间的所有差值都变为0,那么,我们就可以在差分数组中,分别寻找一个正值,一个负值,我们将这两个值之间的所有数都加1或者减1,这个区间的差值时不变的,左右两边的值是改变的,因此,我们的差分数组,可以一直维护相邻值得差,所以对差分数组得操作,就是对原数组区间的操作.

2025-03-31 15:53:34 389

原创 归并排序模板

如果右半部分小,就先将右半部分放到p数组中,并计算有多少个比右半部分大的个数(mid-l+1)每次将区间一分为二,分别对左区间和有区间进行归并,归并完后,这两个区间都为有序区间。三个指针,一个表示开头(i),一个表示中间(j),一个表示p数组开头的位置k=0。左半部分表示左边遍历到的数,右半部分表示右边遍历到的数。将左半部分或者右半部分没遍历完的数放到p数组中。如果左半部分小,就先将左半部分放到p数组中。两个数组a,p a为原数组。

2025-03-31 15:50:53 414

原创 数组离散化

假设将数组a进行离散化。

2025-03-31 15:50:11 263

原创 树的直径模板

思路:随便取一点,寻找离该点最远的一点,最远的点就是树直径的一段。[[acwing1207. 大臣的旅费]]代码以acwing1207为例。概念:树里最长的一条路。

2025-03-31 15:49:12 343

原创 树状数组模板

【代码】树状数组模板。

2025-03-31 15:47:02 323

原创 并查集算法

【代码】并查集算法。

2025-03-31 15:46:16 405

原创 二分图算法

显然,这题是需要用到二分图的,但是最终我们的答案是二分图减去匹配数/2,原因:首先,在我们匹配关系的时候,我们是将一个点拆分成两个点,假设此时有7个人进行匹配,那么我们匹配的时候相当于2n个,左边是n个男生,右边是n个女生,所以,最终匹配的个数应该是n-匹配数/2。3.标记之后,我们判断此时Bi是否已经配对,如果没有配对,那么就让Ai与Bi配对,否则,我们将Bi配对的Aii从1开始,判断Aii能否将此时的Bi让出来,让Aii与其他能够配对的B配对。2.此时,如果Bi已经被访问过,我们就返回1否则,就标记。

2025-03-31 15:44:22 607

原创 状态压缩集合

我们这里的所有S表示的都是存储元素的位置,而并非直接就是元素自身,比如2 表示的存储第2个位置的元素的集合 3表示的是存储第一和第二个元素的集合,而在我们的左移pos中,我们会发现如果元素存储在第一个位置(下标为1),那么,他就需要左移0个位置,即当元素处于第i个位置时,我们需要左移i-1个位置,也就是 <<(i-1)种,因此,枚举显然不合理,此时,我们考虑状态压缩,dp数组来解决。假设现在已经访问过的顶点集合(起点0当作还未访问过的顶点)为s,当前所在的顶点为v,用。这类问题的典型问题就是。

2025-02-05 13:55:16 213

基于qt实现的一个简单wps软件

基于qt实现的一个简单wps软件

2025-03-31

空空如也

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

TA关注的人

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