随笔分类 -  OI

2019
摘要:整除性理论 *P1835 素数密度(区间筛) 给定两个整数\(L,R(1<=L<=R<=2^{31},R-L<=10^6)\),求闭区间 \([L,R]\) 中的质数个数。 推论 1:若\(a\)为合数,则\(a\)能被表示成\(a=pq\),其中 \(p,q>1\)。易证\(p,q\)中一定有一个 阅读全文
posted @ 2019-11-12 17:55 hélium 阅读(6) 评论(0) 推荐(0)
摘要:期望dp 数学期望: $E(X) = \sum {p_ix_i}$ 数学期望是线性函数,满足$E(aX + By) = a E(X) + b E(Y)$ ~~接下来看两道毒瘤题~~ 绿豆蛙的归宿 对于每个点,它的 期望值 = 当前路径长度 / 起点的出度 所以我们先求出每个点的出度——无非就是在加入 阅读全文
posted @ 2019-11-11 15:21 hélium 阅读(183) 评论(0) 推荐(0)
摘要:Bézout定理 $ax + by = gcd(a, b)$ 证明 欧几里得算法执行到最后时,存在$x=1,y=0$,$a 1+0 0=gcd(a, 0)$。 若$b 0$,$gcd(a,b)=gcd(b,a\ mod\ b)$。假设存在$x, y$,满足$b x+( a\ mod\ b) y=gc 阅读全文
posted @ 2019-10-08 20:03 hélium 阅读(118) 评论(0) 推荐(0)
摘要:首先,复习一下欧拉函数(https://www.cnblogs.com/hnoi/p/10992072.html): 在算术基本定理中, 1~N中与N互质的数的个数成为欧拉函数: 费马小定理: 若p是质数,则对于任意整数a,有。 欧拉定理: 若正整数a,n互质,则 。 证明: 设n的简化剩余系是{} 阅读全文
posted @ 2019-09-07 16:50 hélium 阅读(223) 评论(0) 推荐(0)
摘要:Trie Trie(字典树)是一种用于实现字符串快速检索的多叉树结构。Tire的每个节点都有若干个字符指针,若再插入和检索字符串时扫描到一个字符,就沿字符走向指向的节点。 插入 当需要插入一个字符串时,我们从根走起,依次扫描每一个字符: 当字符串中的字符都检索完毕时,记录下其终点结点。 检索 当需要 阅读全文
posted @ 2019-08-15 22:38 hélium 阅读(132) 评论(0) 推荐(0)
摘要:二叉查找树(BST)的两条性质: 1.该节点的关键码不小于它的左子树中任意节点的关键码 2.该节点的关键码不大于它的右子树中任意节点的关键码 显然,二叉树的中序遍历是关键码单调递增排列的序列。 为避免越界,在BST中插入关键码为正无穷和负无穷的结点为初始情况。 基本操作: 1.检索 递归: (1)找 阅读全文
posted @ 2019-08-15 00:06 hélium 阅读(304) 评论(0) 推荐(0)
摘要:NOI2009 开关 现有N(2 ≤ N ≤ 100000)盏灯排成一排,从左到右依次编号为:1,2,......,N。然后依次执行M(1 ≤ M ≤ 100000)项操作,操作分为两种:第一种操作指定一个区间[a, b],然后改变编号在这个区间内的灯的状态(把开着的灯关上,关着的灯打开),第二种操 阅读全文
posted @ 2019-07-15 12:30 hélium 阅读(277) 评论(0) 推荐(0)
摘要:边带权并查集用于维护相互连通的结点之间的权值。其中的难点在于分析路径压缩时对于结点的更新。 在分析一道题时,我们要清楚自己所要得到的信息,并找到其来源。在写程序之前,先分析确定边权(深度?子树大小?),再分析回溯过程中权值的更新方式。 这道题带来的困惑是,对于合并队伍,我们会把树根连在一起。对于连通 阅读全文
posted @ 2019-07-09 00:17 hélium 阅读(216) 评论(0) 推荐(0)
摘要:线段树(SegmentTree)是一种基于分治思想的二叉树结构,用于区间上进行信息统计。与按照二进制位进行划分的树状数组相比,线段树是一种更加通用的结构。 性质 建树 每个叶节点t[i, i]维护a[i]的值,从而使信息从下向上传递信息。 单点更改 从根节点出发,找到区间[x, x]的叶节点,然后从 阅读全文
posted @ 2019-07-06 22:46 hélium 阅读(630) 评论(0) 推荐(0)
摘要:并查集(Disjoint-Set)是一种可以维护若干个不重叠的集合。它的基本操作有两个: GET 查询一个元素属于哪个集合 MERGE 合并两个集合成为一个集合,就是将其中一个父结点指向另一个父结点 在查询的过程中,我们可以利用回溯顺便将路径中所有元素指向父结点,这个操作称为路径压缩。 模板: in 阅读全文
posted @ 2019-06-22 21:07 hélium 阅读(325) 评论(0) 推荐(0)
摘要:看书的时候第n次见到vector了,一时兴起:既然这么好用就掌握它吧。 看书看别人的博客发现原理并不复杂。并且!居然支持任意位置插入!!一直以来无限头疼的问题,唯有二叉查找树--平衡树能解决的艰难的问题居然被STL封装好了! 立刻把之前树状数组折腾了好久的题拿出来用vector做。 五分钟搞定!!! 阅读全文
posted @ 2019-06-10 19:06 hélium 阅读(621) 评论(0) 推荐(0)
摘要:互质:任意自然数a, b,若gcd(a, b) = 1,则a,b互质。 欧拉函数:1~N中与N互质的数的个数被称为欧拉函数,记为φ(N)。 若在算术基本定理中, 。 公式的证明用到的思想被称为容斥定理。在N的全部质因子上用容斥定理,即可得到1~N中不与N含有任何共同质因子的数的个数,也就是与N互质的 阅读全文
posted @ 2019-06-08 23:02 hélium 阅读(321) 评论(0) 推荐(0)
摘要:质数: 若一个正整数无法被除了1和它自身之外的任何自然数整除,则该数称为质数,否则称为合数。 质数的三种求法中,筛选法优选线性筛法,判定则用试除法最好。 试除法: Eratosthenes筛法: 线性筛法: 阅读全文
posted @ 2019-06-07 18:57 hélium 阅读(236) 评论(0) 推荐(0)
摘要:超级素数 程序名:super.cpp super.in super.out 题目描述: 一个素数,依次从低位去掉一位,二位,……,若所得的各数仍都是素数,则称超级素数。 例如:7331是个4位超级素数,因为7,73,733,7331均为素数. 试求n位数的超级素数: (1)超级素数的个数 (2)所有 阅读全文
posted @ 2019-06-07 11:08 hélium 阅读(1742) 评论(0) 推荐(0)
摘要:SUMMARIZE 2019.6 两个月里一直投入于搜索和树状数组里。我总喜欢写,却一直在重复已经掌握的东西。总是在有新的想法后急于去写出来,在出现bug之后想不通也没有完全解决。这样是永远不会有进步的。在考试的时候,纵使有n种思路,也没有一种完全畅通。 我决定把所有搁置的题按照正解的思路做一遍。 阅读全文
posted @ 2019-06-02 21:26 hélium 阅读(248) 评论(0) 推荐(0)
摘要:广度优先搜索算法(Breadth-First Search),又称为"宽度优先搜索"或"横向优先搜索"主要可以解决两类问题: ·是否存在从起点到终点的路径 ·找出从起点到终点的最短路径a 算法描述: 值得注意的是,广搜的过程中每生成一个子结点,都要提供指向他们的父结点的指针和层数,以免找到解的时候找 阅读全文
posted @ 2019-05-25 15:53 hélium 阅读(667) 评论(0) 推荐(0)
摘要:Stars Description Astronomers often examine star maps where stars are represented by points on a plane and each star has Cartesian coordinates. Let th 阅读全文
posted @ 2019-05-25 15:43 hélium 阅读(122) 评论(0) 推荐(0)
摘要:poj1198: Solitaire Solitaire is a game played on a chessboard 8x8. The rows and columns of the chessboard are numbered from 1 to 8, from the top to th 阅读全文
posted @ 2019-05-25 15:41 hélium 阅读(160) 评论(0) 推荐(0)