摘要: 题面 显然我们需要考虑每一个区间,而这个问题显然我们都会做,这不就是这道题么,也就是说假如中位数是$mid$,区间和是$sum$,那么代价就是$\sum\limits_{i=l}^r |mid-num[i]|$ 所以现在我们要维护这样的一个数据结构:支持删除/插入一个数,查询中位数和查询区间和 线段 阅读全文
posted @ 2018-09-18 19:12 Speranza_Leaf 阅读(199) 评论(0) 推荐(0)
摘要: 1.结构体重载运算符 语法还债系列1 (一般用于结构体的优先队列)举例说: 改变小于号对于结构体SP的定义,让value小的结构体的被认为是“大”,value大的结构体的被认为是“小”,从而以结构体中的value为关键字建立一个结构体小根堆 2.下标为负的问题 c++数据下标为负时运行会爆出一个数, 阅读全文
posted @ 2018-09-18 17:51 Speranza_Leaf 阅读(223) 评论(0) 推荐(0)
摘要: 1.摩尔投票法 可能一辈子用不到的东西 不占用空间统计一个出现次数大于等于总数一半的众数 扫一遍,记录当前众数和当前众数的出现次数。若次数为零记录当前数为众数,否则若当前数与当前众数相同计数$+1$,不同计数$-1$。因为这个众数出现了一半以上,最后计数下来一定会剩下它自己,其余的数都被“抵消”掉了 阅读全文
posted @ 2018-09-18 17:45 Speranza_Leaf 阅读(190) 评论(0) 推荐(0)
摘要: 1.期望 给一个比较好理解的解释:$expectation->\frac{sum_{val}}{sum_{plan}}$(SD_le:好多期望题都是计数题233) 一些性质:设$K$为一个常数,$X$和$Y$是两个随机变量。则数学期望$E$满足如下性质 $1.E(K)=K$ $2.E(K*X)=K* 阅读全文
posted @ 2018-09-18 17:44 Speranza_Leaf 阅读(1173) 评论(0) 推荐(0)
摘要: Update on 2019.3.21 1.单调栈求最大子矩形面积(以由“1”构成为例) 模板题:玉蟾宫 的代码 先预处理行/列上最长的连续$1$,然后维护一个行/列的单调栈 1 #include<cstdio> 2 #include<cstring> 3 #include<algorithm> 4 阅读全文
posted @ 2018-09-18 17:43 Speranza_Leaf 阅读(204) 评论(0) 推荐(0)
摘要: 1.floodfill 模板题 思路:复制全图,把要填充的部分用边界包起来。每次以BFS的方式,由最靠内的边界向里面扩展,扩展的同时缩小边界。 由“木桶原理”,一个块的水位高度取决于它周围最低的块。所以用一个以高度为标准的小根堆维护准备进行扩展的一圈块,扩展的同时更新最大值,注意最后要减去原来的高度 阅读全文
posted @ 2018-09-18 17:40 Speranza_Leaf 阅读(267) 评论(0) 推荐(0)
摘要: Update on 2019.3.21 1.错排问题 $D(1)=0,D(2)=1,D(n)=(n-1)*(D(n-1)+D(n-2))$ $(n>=3\&\& n∈N^*)$ 2.组合恒等式(感觉没啥用) ①$C_n^i=C_n^{n-i}$ ②$kC_n^k=nC_{n-1}^{k-1}$ ③$ 阅读全文
posted @ 2018-09-18 17:38 Speranza_Leaf 阅读(200) 评论(0) 推荐(0)
摘要: Update on 2019.3.21 筛法 线性筛那一套.jpg 1 //欧拉函数 2 int npr[N],pri[N],phi[N]; 3 void Getphi() 4 { 5 npr[1]=true,phi[1]=1; 6 for(int i=2,cnt=0;i<=Maxx;i++) 7 阅读全文
posted @ 2018-09-18 17:36 Speranza_Leaf 阅读(216) 评论(0) 推荐(0)
摘要: 1.Hash ①Hash是什么 仅针对信息学竞赛来说,你可以将Hash看做是一个由字符串到整型的映射(比较好懂),常常用来判断两个字符串是否相同 ②Hash的原理 Hash会将一个字符串转化为一个多于$k$进制的数,其中$k$为字符串中出现的字符的种类。 具体来说就是将字符串的每一位字符$c_1,c 阅读全文
posted @ 2018-09-18 17:30 Speranza_Leaf 阅读(217) 评论(0) 推荐(0)
摘要: 1.线性筛 ①什么是线性筛 一种可以在$O(n)$时间内筛出$1->n$所有素数/求出$1->n$积性函数函数值的筛法,所谓筛法就是指“检定某种数的算法”。其实线性筛能求出积性函数函数值就是因为它能筛素数。 ②线性筛的原理 丢掉低效率的枚举和那些乱七八糟地把素数判定法当筛法的东西,我们直接从一个效率 阅读全文
posted @ 2018-09-18 17:26 Speranza_Leaf 阅读(145) 评论(0) 推荐(0)
摘要: 1.轻重链剖分 先放个祖传轻重链剖大佬communist的讲解(感谢提供图片) ①轻重链剖分是什么 一种树上统计的方法,可以处理链的修改和查询。 准备对这棵树进行轻重链剖分↓ ②轻重链剖分的原理 首先明确两个定义:重儿子和轻儿子。重儿子指一个节点所有儿子中所有子树最大的儿子,剩下的节点自然是轻儿子了 阅读全文
posted @ 2018-09-18 17:10 Speranza_Leaf 阅读(139) 评论(0) 推荐(0)
摘要: 1.拓扑排序 ①拓扑排序是什么 拓扑排序经常被用来解决有关于“顺序”的图论问题,其本质是对图的一种操作,可以判断一张有向图中是否有环。拓扑排序会将一张图$G$中所有顶点排成一个线性序列,在这个线性序列中,对于图中任意一条边$(u,v)∈E(G)$,使得$u$在这个线性序列中出现在$v$之前,这个线性 阅读全文
posted @ 2018-09-18 17:07 Speranza_Leaf 阅读(202) 评论(2) 推荐(0)
摘要: 1.匈牙利算法 ①匈牙利算法能干啥 当然是求二分图最大匹配咯(大雾),不过问题来了——什么是二分图,什么是二分图的匹配,什么又是二分图的最大匹配?我们一个个慢慢写。 (1)什么是二分图 二分图是一种特殊的图。对于一张无向图,如果它的顶点们可分割为两个不相交的子集$S1$和$S2$,并且图中的每条边$ 阅读全文
posted @ 2018-09-18 17:02 Speranza_Leaf 阅读(182) 评论(0) 推荐(0)
摘要: 1.Tarjan_SCC[强连通分量(+缩点)] special:什么是Tarjan? 说“什么是Tarjan”不好,Tarjan全名Robert Tarjan,是一位计算机学家,发明/提出了许多(神奇)的算法和数据结构,比如LCA(最近公共祖先),SCC(Strongly Connected Co 阅读全文
posted @ 2018-09-18 16:56 Speranza_Leaf 阅读(157) 评论(0) 推荐(0)
摘要: 1A.最小生成树之Kruskal算法 ①Kruskal算法能干啥及它的原理和时/空间复杂度 Kruskal算法用于构造最小生成树,它是一个基于贪心思想的算法 我们建立一个$O(n)$的并查集和一个$O(m)$的结构体,每个结构体存储一对点和点之间的边权,然后按边权从小到大排序,顺次取每一对点。如果两 阅读全文
posted @ 2018-09-18 12:02 Speranza_Leaf 阅读(174) 评论(0) 推荐(0)
摘要: 1.平衡树-树堆与无旋树堆 ①平衡树是啥,树堆和无旋树堆又是啥? 平衡树,顾名思义就是长得“平衡”的树,即期望树高在log级别的二叉搜索树(这样每次操作才是log的) Treap是一种平衡树,叫做“树堆”(tree-heap)。Treap的每个节点会随机分配一个优先级,再根据这个优先级建立一个满足堆 阅读全文
posted @ 2018-09-18 11:53 Speranza_Leaf 阅读(140) 评论(0) 推荐(0)
摘要: 1.并查集(Set Union) 1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 const int N=10005; 5 int n,m,t1,t2,t3; 6 int aset[N],siz[N]; 7 int 阅读全文
posted @ 2018-09-18 11:00 Speranza_Leaf 阅读(151) 评论(0) 推荐(0)