笔记
文章平均质量分 93
No_wonder_
信息学奥赛高中生
展开
-
2020 NOIP 退役之战
Day —2今天要到了学校OJ的管理员,改了一些东西。撤下了2019年发布的一周任务,已死的bzoj与codevs,补充了一下模板区,然后建了个新题当然我并不会写数据(lfyzoj上的原创题题解都给上啦!欢迎来做题QwQ。Day -1今天开门红,打车去高铁的路上全是红灯,根据RP守恒定律,明天的noip必RP++车上看了一车小说,旁边的lpj直接睡觉(下车和我在太原理工大的哥哥联系了一下,今晚有机会的话去面。下了车又去打车,那个打车区候客通道又让我想起了在济南等了一个小时的经历……太原的记录是原创 2020-12-04 15:59:49 · 261 阅读 · 1 评论 -
学习笔记——模拟退火
真正的人品永远无惧于参数的调控模拟退火模拟退火算法来源于固体退火原理,是一种基于概率的算法,将固体加温至充分高,再让其徐徐冷却,加温时,固体内部粒子随温升变为无序状,内能增大,而徐徐冷却时粒子渐趋有序,在每个温度都达到平衡态,最后在常温时达到基态,内能减为最小。 ——百度百科换句话说,固体的冷却就相似于一个多峰函数,而最后内能最小的状态,就是一整个函数的最小值。模拟退火实际上模拟的就是这个过程。我们给他设置一个初始温度T0T_0T0(足够大),在设置一个降温系数δ\deltaδ(略小于1)原创 2020-11-24 18:16:45 · 630 阅读 · 0 评论 -
学习笔记——分层图
分层图刚听到这个思想的时候,蒟蒻实际上是被唬住了,后来学懂了发现不过如此啊!!!原blog分层图求最短路分层图的引入问题是这样的:假设你要从图中的A点走到B点,并且你有k次机会免费走过某条边,那么请问最短路有多大?这个问题可以拿动态规划解决,不过我们先看如何用分层图解决这个问题。我们建k+1层图。然后有边的两个点,多建一条到下一层边权为0的单向边,如果走了这条边就表示用了一次机会。对于数据:n = 4,m = 3, k = 20 1 1001转载 2020-10-13 17:04:02 · 270 阅读 · 0 评论 -
学习笔记——树状数组
树状数组树状数组,就是用数组来模拟树形结构。可以方便的实现单点更新,单点查询,区间查询,区间更新常数比线段树小很多,也比线段树好打,但是实际上树状数组能解决的问题线段树都可以解决。介绍树状数组假如我们有一个数组,要实现logn级别的区间查询,那么该怎么办呢。我们考虑将这个数组建在一棵树上,每一个节点代表一段区间(这点在我线段树的blog里讲解了),树状数组就是由此产生的。这就是一个树状数组(原图)下面的是原数组,用a[i]代替,树状数组设为c[i]那么显而易见c[1]=a[1]c[1]原创 2020-10-11 18:30:29 · 112 阅读 · 0 评论 -
2020秋清北学堂秋季冲刺营游记
9.30坐了6个小时高铁,下来又等了一个小时出租车QAQ,蒟蒻等的花儿都谢了。下来的时候被济南火车站惊艳了一下,随后一个小时对济南交通情况与生活气息的观察(等出租车)给了我一种我很熟悉这里的错觉QAQ。真是令人愤懑。附图—济南火车站P. S. 这里的游记是我等出租车的时候写的...原创 2020-09-30 19:16:58 · 227 阅读 · 1 评论 -
学习笔记——数学期望
期望蒟蒻在上个暑假才了解了一部分数学期望,今天来专门学习一些期望的基础概念与知识定义在概率论和统计学中,数学期望(mean)(或均值,亦简称期望)是试验中每次可能结果的概率乘以其结果的总和,是最基本的数学特征之一。它反映随机变量平均取值的大小。需要注意的是,期望值并不一定等同于常识中的“期望”——“期望值”也许与每一个结果都不相等。期望值是该变量输出值的平均数。期望值并不一定包含于变量的输出值集合里。大数定律规定,随着重复次数接近无穷大,数值的算术平均值几乎肯定地收敛于期望值。——百度百科如是说原创 2020-09-25 17:53:26 · 1453 阅读 · 0 评论 -
学习笔记——链表
链表链表是一种很重要的数据结构。链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。实际上我刚学链表的时候是习惯用指针进行实现,后来习惯用结构体中前驱,后继或者数组等逻辑指针方式实现(因为蒟蒻对物理指针的运用实在是一言难尽单链表单链表就是简单的从头结点一个一个连接而成的单向链表。尾指针指向NULL。链表便于创建节点,删除节点,访问节点代码就不贴了。可以在这里查看循环原创 2020-09-15 17:52:11 · 98 阅读 · 0 评论 -
学习笔记——运算符
位运算故事是这样的,蒟蒻今天开心的做到了2019年提高组D1T2,突然发现自己不知道异或运算是个什么东西,这放考场上不就当场凉凉。吓得写篇文章学习位运算。类型百度百科说有七种含义c++按位与a & b按位或a | b按位异或a^b按位取反~a左移b位a<<b带符号右移a>>b不带符号右移a>>>b具体是什么样子可以自行查看...原创 2020-09-10 11:00:22 · 101 阅读 · 0 评论 -
学习笔记——乘法逆元
乘法逆元本文来自这里!乘法逆元是数论中重要的内容,也是 ACM 中常用到的数论算法之一。所以,如何高效的求出乘法逆元是一个值得研究的问题。这里我们只讨论当模数为素数的情况,因为如果模数不为素数,则不一定每个数都有逆元。定义在modpmod pmodp的意义下我们把 xxx 的乘法逆元写作为x−1x ^ {-1}x−1。乘法逆元有如下的性质:乘法逆元的一大应用是模意义下的除法,除法在模意义下并不是封闭的,但我们可以根据上述公式,将其转化为乘法。下面我们看几种求乘法逆元的方法。原创 2020-09-01 18:21:15 · 204 阅读 · 1 评论 -
学习笔记——扩展欧几里得
扩展欧几里得欧几里得算法众所周知,扩欧是从欧几里得来的。本部分来自这里链接内有两种证明欧几里德算法又称辗转相除法,是指用于计算两个非负整数a,b的最大公约数。应用领域有数学和计算机两个方面。计算公式gcd(a,b)=gcd(b,a mod b)。gcd(a,b) = gcd(b, a \bmod b)。gcd(a,b)=gcd(b,amodb)。算法来自于这个定理两个整数的最大公约数等于其中较小的那个数和两数相除余数的最大公约数。证明a可以表示成a=kb+ra = kb + ra=kb+r转载 2020-08-31 16:23:27 · 277 阅读 · 0 评论 -
学习笔记——差分
差分差分(difference)又名差分函数或差分运算,差分的结果反映了离散量之间的一种变化,是研究离散数学的一种工具。它将原函数f(x) 映射到f(x+a)-f(x+b) 。差分运算,相应于微分运算,是微积分中重要的一个概念。总而言之,差分对应离散,微分对应连续。差分又分为前向差分、向后差分及中心差分三种。(上面概念蒟蒻都不懂/kk)一维差分一维差分中,差分就是将数列中的每一项分别与前一项数做差例如 1 2 3 4 5差分后 1 1 1 1 1 -5;就是这样的。那么一维差分有显而易见的性原创 2020-08-10 16:22:34 · 3516 阅读 · 0 评论 -
学习笔记——LCA
LCALCA,即最近公共祖先,在图论中应用比较广泛。LCA的定义如下:给定一个有根树,若节点z同时是节点x和节点y的祖先,则称 z 是 x,y 的公共祖先;在 x,y 的所有公共祖先当中深度最大的称为 x,y 的最近公共祖先。下面给出三个最近公共祖先的例子:显然,从上面的例子可以得出, LCA(x,y)即为 x,y 到根节点的路径的交汇点,也是 x 到 y 的路径上深度最小的节点。向上标记法求LCA求LCA最直接的方法,单次查询的时间复杂度最坏为 O(n)(看起来好像还挺快的,不过什么题会只有一原创 2020-08-10 21:06:49 · 282 阅读 · 0 评论 -
学习笔记——树链剖分
树链剖分蒟蒻在做LCA时发现自己把树链剖分忘了QAQ,于是蒟蒻回来补一篇树链剖分。本文大部分来自这里!树剖是通过轻重边剖分将树分割成多条链,然后利用数据结构来维护这些链(本质上是一种优化暴力),保证每个点属于且只属于一条链,这里的数据结构包括树状数组、BST、SPLAY、线段树等(都不会QAQ)明确概念:重儿子:父亲节点的所有儿子中子树结点数目最多(size最大)的结点;轻儿子:父亲节点中除了重儿子以外的儿子;重边:父亲结点和重儿子连成的边;轻边:父亲节点和轻儿子连成的边;重链:由多条重边转载 2020-08-11 11:57:51 · 249 阅读 · 0 评论 -
学习笔记——线段树
线段树本文主要来自百度百科和这篇blog线段树是一种二叉搜索树,与区间树相似,它将一个区间划分成一些单元区间,每个单元区间对应线段树中的一个叶结点。长这样对于线段树中的每一个非叶子节点[a,b],它的左儿子表示的区间为[a,(a+b)/2],右儿子表示的区间为[(a+b)/2+1,b]。因此线段树是平衡二叉树,最后的子节点数目为N,即整个线段区间的长度。基本结构与建造线段树是建立在线段的基础上,每个结点都代表了一条线段[a,b]。长度为1的线段称为元线段。非元线段都有两个子结点,左结点代表的线原创 2020-08-11 15:55:32 · 302 阅读 · 1 评论 -
学习笔记——RMQ
RMQ蒟蒻最近写线段树写自闭了QAQ,就来补一篇RMQ博文。RMQ (Range Minimum/Maximum Query)问题是指:对于长度为n的数列A,回答若干询问RMQ(A,i,j)(i,j<=n),返回数列A中下标在i,j里的最小(大)值,也就是说,RMQ问题是指求区间最值的问题。朴素算法每次询问就一个一个搜,每次查询效率为O(n),本蒟蒻都觉得简单了所以就不写了线段树线段树可以做此类问题,不过线段树的编写对于初学者不太友好(本蒟蒻就自闭了)蒟蒻抄来的参考代码#include原创 2020-08-12 19:35:32 · 134 阅读 · 1 评论