- 博客(178)
- 收藏
- 关注
原创 浅说树形dp
因为树的形式非常适合递归,他所带来的访问顺序也是非常符合拓扑排序的,故而在处理子树类问题时,dp可以很好的利用相邻层级之间的关系和逻辑,非常符合dp的“口味”,所以我们才有了这个树形dp。树形dp和线性dp没有什么本质上的区别,只不过一个是在树上,一个是在线上,唯一的一个不同点就是树形dp可以大致的定形,而线性dp却不可以。
2025-02-15 22:33:25
898
2
原创 浅说树上差分——边差分
其实这种差分的思路和点差分的思路差不多,只不过因为是边,所以我们不能直接操作,因此我们要把这个边放到这条边所连接的两个点中的更深一层的点。deepxdeepy→pympxy我们还是一步一步的推,相信在有上节课中教你的推导方式,这个公式也是呼之欲出的,所以我就不做示范了,下来你可以自己试试。这个的话,总结一下就是。至于求得最后的答案,也是和点差分是一样的,所以就不做过多的赘述了。
2025-01-23 09:30:40
998
原创 浅说单调队列
单调队列(Monotonic Queue)是一种特殊的,它是一个队列,并且队列中的元素具有单调性。这种单调性可以是单调递增或者单调递减或呈现出其他的样子。例如,在一个单调递减的队列中,队首元素是队列中最大的元素,并且随着元素的入队和出队操作,队列始终保持递减的性质。
2024-12-13 16:21:43
1285
原创 值得一看——单调栈集中训练题目,贴海报
Byteburg市东边的建筑都是以旧结构形式建造的:建筑互相紧挨着,之间没有空间.它们共同形成了一条长长的,从东向西延伸的建筑物链(建筑物的高度不一).Byteburg市的市长Byteasar,决定将这个建筑物链的一侧用海报覆盖住.并且想用最少的海报数量,海报是矩形的.海报与海报之间不能重叠,但是可以相互挨着(即它们具有公共边),每一个海报都必须贴近墙并且建筑物链的整个一侧必须被覆盖(意思是:海报需要将一侧全部覆盖,并且不能超出建筑物链)
2024-11-27 18:22:42
486
原创 浅说单调栈
有n个人从左到右站成一排,每个人都有一个身高,现要求所有人都向右看齐,问每个人可以看到的最远的人是哪一个?注:一个人右边第一个身高大于等于他的人会挡住这个人的视线。如果没有输出-1。n≤108对于这个题,我们很容易想出暴力的解法,但是这样写的时间复杂度是On2的,在这题的数据范围的情况下是过不了的。同时,我们也会想到从后往前维护最高身高,然后用二分的思路去找,这样是可以,时间复杂度为Onlogn但是也过不了,所以我们只能使用单调栈,一种时间复杂度为On的算法。
2024-11-27 18:16:55
978
原创 细说简单简单莫队
在信竞得路上,我们时常遇到一些题目让我们求解一段区间里的颜色个数有多少啊,这个区间内的最大值是多少啊?诸如此类的问题常常让我们这些菜鸡束手无策,所以莫队算法横空出世!莫队算法是由莫涛提出的算法。在莫涛提出莫队算法之前,莫队算法已经在 Codeforces 的高手圈里小范围流传,但是莫涛是第一个对莫队算法进行详细归纳总结的人。莫涛提出莫队算法时,只分析了普通莫队算法,但是经过 OIer 和 ACMer 的集体智慧改造,莫队有了多种扩展版本,想什么待修莫队之类的。
2024-11-26 16:01:18
407
原创 分块——最为优雅的暴力
在信息学竞赛中,常常会遇到一些区间修改或区间查询的题目,如果直接敲暴力的话,时间复杂度是Onm可能会超时,如果写树状数组或线段树的话,又有一点复杂,不易理解,那么这时候就要请出我们今天的主角——
2024-11-09 18:36:54
1266
原创 质数测试——Fermat素数测试和MillerRabin素数测试
Fermat prime teat (费马素性检验)是一种素数判定法则,利用随机化算法判断一个数是合数还是可能是素数。但是这样有可能会错。Miller-Rabin prime test(米勒-拉宾素性检验)是一种素数判定法则,利用随机化算法判断一个数是合数还是可能是素数。卡内基梅隆大学的计算机系教授Gary Lee Miller首先提出了基于广义黎曼猜想的确定性算法,由于广义黎曼猜想并没有被证明,其后由以色列耶路撒冷希伯来大学的Michael O. Rabin教授作出修改,提出了不依赖于该假设的随机化算法。
2024-11-01 17:22:42
1090
1
原创 编程小白如何成为大神?大学新生的最佳入门攻略
例如,区块链技术虽然很热门,但它涉及到很多复杂的概念和技术,如密码学、分布式系统等,如果没有一定的编程和计算机基础,很难深入理解。不同的编程语言有不同的代码规范,如 Python 的 PEP 8 规范,规定了代码的缩进、命名规则等内容;例如,在学习一个新的语法知识点后,应该立即动手写一个小的代码片段来测试和巩固这个知识点。它的语法简洁,学习曲线相对平缓,而且有大量的学习资源和活跃的社区。它的就业市场广阔,尤其是在大型企业和金融机构中有大量的应用。不过需要注意的是,C++ 的语法相对复杂,学习难度较大。
2024-10-25 19:05:58
822
原创 机器学习与神经网络的当下与未来
例如,物理学中的守恒定律等基本原理可以被借鉴到神经网络的设计中,以确保模型的稳定性和合理性。例如,图神经网络的结构与物理系统中相互作用的网络结构有相似之处,这种相似性可以帮助物理学家更好地理解复杂物理系统中的相互作用。例如,在天文学中,可以通过分析海量的星空观测数据来发现新的天体、探索宇宙的结构和演化规律;机器学习助力物理学研究的新发现:机器学习和神经网络能够发现数据中的隐藏模式,这有助于物理学家探索新的物理现象。例如,在凝聚态物理中,通过对材料电子结构数据的机器学习分析,可能会发现新的物态或者物理特性。
2024-10-25 18:56:36
1181
原创 数学基础算法——质数篇
质数(英文名:Primenumber)又称素数,是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。而大于1又不是指数的正整数称为合数(规定1既不是质数也不是合数)。
2024-10-25 16:48:03
2496
2
原创 浅说倍增算法——线性倍增
倍增,倍增,顾名思义,就是以一个数成倍的增长,这个数通常是2。当然也会有在不同的时候会以其他的数进行翻倍,比如3,8,16等等,但是都不常见。我们现在就先来讲讲倍增中的线性倍增。
2024-10-22 15:27:06
1388
原创 浅说差分算法(下)
二维差分是指对于一个n*m的矩阵a,要求支持操作pro(x1,y1,x2,y2,a),表示对于以(x1,y1)为左上角,(x2,y2)为右下角的矩形区域,每个元素都加上常数a。求修改后的矩阵a。
2024-10-21 17:20:49
321
原创 解释一下动态规划中的LCIS问题
LCIS,全称是LongestCommonIncreasingSubsequence,翻译过来就是最长公共上升子序列。这个问题十分有趣,也是最长上升子序列(LIS)和最长公共子序列(LCS)的合解问题,我们先来看一看。
2024-10-21 17:12:50
894
原创 CSP-J模拟赛day6——试题
万人瞩目的第一届“全人杯”思维挑战赛正在紧锣密鼓的进行中,比赛的类别包括数学、物理和信息。为了激励同学们踊跃参与,比赛设置了一系列的奖项。对于每个学科,分别设置了一、二、三等奖以及鼓励奖和参与奖。其中,一等奖预设x名,奖金a元,二等奖预设y名,奖金b元,三等奖预设z名,奖金c元,对于未获得一、二、三等奖但是得分在m(m>0)分及以上的学生均为鼓励奖(数据保证有学生会获得鼓励奖),奖金d元,对于剩余未获奖的学生,只要得分不为0分均可以获得参与奖(数据不保证一定有学生获得参与奖),奖金e元。
2024-10-18 15:31:09
1103
原创 CSP-J模拟赛day5——解析+答案
考虑每个点作为中心时,方案数量实际上就是从相邻点中任意选两个组成三点连通块。因此统计每个点的度,记为di,对每个点来说方案数是di∗di−1/2。加和即可。注意long long。
2024-10-12 17:11:24
1160
原创 CSP 2022 提高级第一轮单项选择题解析
每层有1,3,9,27,81个结点,所以第一个结点的第1个孩子的编号是2,第2个是42(因为总共有5层,第1个下面有4层,共40个孩子),第3个是82。结点82的第一个孩子有13个结点,第二个孩子的编号是96,此时距离100非常近,所以直接往下衍生,不难发现,96的第一个孩子是97,97的第三个孩子是100,所以100的父亲是97,选C。解析:real是总的运行时间,包含等待CPU时间和其他进程时间,user是用户CPU时间,不包含内核操作的时间,sys是内核操作的时间。
2024-09-20 15:19:33
536
原创 CSP 2023 提高级第一轮单项选择题解析
, 使得序列 Z 既是序列 X 的子序列,又是序列 Y 的子序列,且序列 Z 的长度 k 在满足上述条件的序列里是最大的。(注:序列 A 是序列 B 的子序列,当且仅当在保持序列 B 元素顺序的情况下,从序列 B 中删除若干个元素,可以使得剩余的元素构成序列 A。在图论中,树的重心是树上的一个结点,以该结点为根时,使得其所有的子树中结点数最多的子树的结点数最少。第四个柱子放4,5,11,总计11个,所以选C。解析:不难发现,有一个环(1,3,4),所以只要删去其中一条便就行,所以有3种可能。
2024-09-13 16:15:11
1133
原创 NOI 基础知识题库(2)
Part II. 计算机常识和 NOI、IOI 历史一个完整的计算机系统应包括 硬件系统和软件系统。目前微型计算机中采用的逻辑组件是 大规模和超大规模集成电路。软件与程序的区别是 软件是程序以及开发、使用和维护所需要的所有文档的总称,而程序是软件的一部分。IT 表示信息技术。计算机中央处理器的英文简称为 CPU。计算机内存储器的一般作用是 存放当前 CPU 正在运行或使用的程序和数据。用来全面管理计算机硬件和软件资源的软件叫 操作系统。LAN 在计算机科学技术领域的常见含义是 局域网。在
2024-09-10 16:22:45
446
原创 NOI基础知识题库(1)
Linuxmvcd..rm−rtest./aoutgdbkillalltestls−ag+lstmptime./test:q!wqZZx:12/12−g−Wall−c−o−lmrootCtrlAltFnAltF2bashpspsCtrl−C./aout1.in./prog11.outls−其中,可以执行的文件是:foobars。
2024-09-09 18:26:52
741
原创 CSP初赛知识点讲解(十二)
在普及组比赛中,因为图中点和边的数量较少, 一般采用邻接矩阵的办法来存储树和图,mp[i][j] 表示i点和j点是否有边相连,初始时mp数组为空, 当有一条i->j的边时,此时mp[i][j]=1,如果是无 向图,j点同样也可以到达i点,还需要mp[j][i]=1。为了清楚的表示出i点到 底和哪些点相连,我们可以用mp[i][j]表示点i 是否和点j相连,0表示不相连,1表示相连。有向图:边有方向的图,比如边a–>b,只能由a到b,不 能由b到a。结点的入度:在有向图中,以这个结点为终点的有向边 的数目。
2024-09-04 19:49:09
392
原创 CSP初赛知识点讲解(十一)
假设此时第k个数已经入栈了,那么还剩下(n-k)个数, 那么剩下(n-k)个数的入出栈方案数很简单就是h[n-k],那么 已经入栈的k个数的方案数呢?肯定不是,h[k]表示的 是前k个数出入栈种树,但是这里已经入栈的k个元素,有没 有必要先出栈,再让k+1这个元素进来,所以,明显有问题。那么我们思考一下,最开始只有一个结点,就是叶子结点,然后再添加一个结点,此时x=y,那么为了满足x=y+1,又的让叶子结点+1。(1)给出一个n,要求一个长度为2n的01序列,使得序列的任意前缀中的1的个数不少于0的个数。
2024-09-04 15:49:34
765
原创 CSP初赛易错题集锦——计算机拔高篇
地址总线的位数决定了CPU可直接寻址的内存空间大小,例如地址总线为16位,其最大的可寻址空间为64KB。【NOIP2001普及组】 CPU处理数据的基本单位是字,一个字的字长(易错:地址总线的位数与可寻址内存空间的关系是2的地址总线位数次方。【NOIP2003普及组】下列关于程序语言的叙述,不正确的是(【NOIP2005普及组】 Intel的首颗16位处理器是(【NOIP2004普及组】下列哪个不是数据库软件的名称(【NOIP1999】计算机的软件系统通常分为(【NOIP2001普及组】解释程序的功能是(
2024-09-03 16:56:13
404
原创 CSP初赛易错知识集锦——计算机基础篇
易错:不是喷墨打印机,激光打印机的工作方式是利用静电吸附墨粉后转移到纸张上。这种技术涉及使用带电的墨粉颗粒在感光鼓上形成图像,然后通过静电作用将墨粉吸附到纸张上,最终通过热固定技术将墨粉永久固定在纸张上,形成最终的印刷品。易错:BIOS是一组固化在计算机主板上一个ROM芯片上的程序,用于提供基本的输入输出功能,确保计算机能够正常启动并运行。易错:RAM内的信息不是有生产厂家预先写入的,ROM中的信息才是生产厂家预先写入的。易错:不是晶体管,第一台晶体管计算机是在1954年发明的。
2024-08-29 21:00:07
342
原创 浅说树的基本性质(下)
树的重心也叫树的质心。找到一个点,其所有的子树中最大的子树节点数最少,那么这个点就是这棵树的重心,删去重心后,生成的多棵树尽可能平衡。我们求解树的重心也非常简单,我们还是以任意点的起点,找到一这个点为根的每个点的子树的数量,然后从中找一个最小值就行了,当然我们这里最好去维护一个每个节点与之有关联的节点的节点数,因为有可能是无根树。
2024-08-29 14:49:11
1130
原创 重构贪心算法(一)
贪心是信息学竞赛中一种很重要的解题方法,他不仅仅是一些题目的正确解法,还可能是一道题目中的部分算法,甚至还可以以错误的算法“骗得”更多的分数。在信息学竞赛中,很多题目往往要求最优解,这就和我们贪心的思维不谋而合,虽然很多时候贪心并不是正解,或者贪心的效率比较低,但是在我们不会做这道题的时候却能带给我们正确的思路。虽然他只是一种基本的算法,但是他的作用不逊于很多高级算法。那么贪心究竟是什么呢?并没有标准答案,在每个人心中,贪心的定义是不同的,思想不同,算法也不同。
2024-08-28 20:52:37
1406
1
原创 浅说树的基本性质(中)
在学会如何写代码之前,我们要先了解一下树的直径的性质。让我们来证明一下上面的两个结论。命题1:直径的两端点一定是两个叶子节点我们这里采用反证法,如果直径的两个端点不是叶子结点,那么必然这个节点一定会有孩子节点,那么这样的路程又可以增加一节,所以原直径并不是这棵树的直径,矛盾。所以直径的两端点一定是叶子结点命题2:距离任意点最远的点一定是直径的一个端点我们这里同样采用反证法,如果距离任意点最远的点不是直径的一个端点,那么这里就有两种情况:我们设当前直径为xy,现有任意点O和另一个点M。
2024-08-23 20:46:50
1432
原创 浅说树及其基本性质(上)
在了解树的基本性质之前,我们要先知道什么是树。首先我们知道树分为和,有根树指的是有一个固定的根,无根树指的是没有固定的根,任何一个节点都可以为树,我们一般情况下,只分析有根树树是nn1个结点的有限集。当时这棵树没有节点时,称为空树。在任意一棵树非空树中应满足:(1) 有且仅有一个特定的称为根root的结点;(2) 当n1时,其余结点可分为个互不相交的有限集,其中每一个集合本身又是一颗树,并且称为根的子树(SubTree)
2024-08-23 20:12:21
1130
原创 算法全面剖析
冒泡排序(英语:Bubble Sort)又称为泡式排序,是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端选择排序( Selection sort)是一种简单直观的排序算法。一般是初学者接触的第一个排序算法,简称为选排。它的工作原理是每一趟从待排序的数据元素中选出最小(或最大)的一个元素,顺序放在。
2024-08-21 15:16:46
1163
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人