微信扫一扫打赏支持

随笔分类 -  3_算法和数据结构

上一页 1 2 3 4 5 6 7 8 9 10 ··· 17 下一页
摘要:[NOIP2003普及组]麦森数(快速幂+高精度) Description 形如2^P-1的素数称为麦森数,这时P一定也是个素数。但反过来不一定,即如果P是个素数,2^P-1不一定也是素数。到1998年底,人们已找到了37个麦森数。最大的一个是P=3021377,它有909526位。麦森数有许多重要 阅读全文
posted @ 2017-12-29 08:48 范仁义 阅读(575) 评论(0) 推荐(0)
摘要:【bzoj1251】序列终结者(伸展树) Description 网上有许多题,就是给定一个序列,要你支持几种操作:A、B、C、D。一看另一道题,又是一个序列 要支持几种操作:D、C、B、A。尤其是我们这里的某人,出模拟试题,居然还出了一道这样的,真是没技术含量……这样 我也出一道题,我出这一道的目 阅读全文
posted @ 2017-12-29 03:29 范仁义 阅读(501) 评论(0) 推荐(1)
摘要:延时标记 阅读全文
posted @ 2017-12-28 22:33 范仁义 阅读(344) 评论(0) 推荐(0)
摘要:曼哈顿距离(坐标投影距离之和)d(i,j)=|X1-X2|+|Y1-Y2|. 我们可以定义曼哈顿距离的正式意义为L1-距离或城市区块距离,也就是在欧几里德空间的固定直角坐标系上两点所形成的线段对轴产生的投影的距离总和。 例如在平面上,坐标(x1, y1)的i点与坐标(x2, y2)的j点的曼哈顿距离 阅读全文
posted @ 2017-12-28 22:10 范仁义 阅读(884) 评论(0) 推荐(0)
摘要:曼哈顿距离最小生成树与莫队算法(总结) 1 曼哈顿距离最小生成树 曼哈顿距离最小生成树问题可以简述如下: 给定二维平面上的N个点,在两点之间连边的代价为其曼哈顿距离,求使所有点连通的最小代价。 朴素的算法可以用O(N2)的Prim,或者处理出所有边做Kruskal,但在这里总边数有O(N2)条,所以 阅读全文
posted @ 2017-12-28 21:55 范仁义 阅读(1824) 评论(0) 推荐(1)
摘要:莫队算法(区间处理) 0x00 概论 莫队算法主要是用于离线解决 通常不带修改只有查询的一类区间问题。 以前遇到区间问题的时候一般都是用线段树解决,当然能用线段树解决的问题也在多数。线段树的主要思路就是通过一个左半拉序列 和一个右半拉序列 来维护它们的父亲(也就是两条序列接合在一起的完整序列),通过 阅读全文
posted @ 2017-12-28 21:42 范仁义 阅读(473) 评论(0) 推荐(0)
摘要:lower_bound lower_bound()返回一个 iterator 它指向在[first,last)标记的有序序列中可以插入value,而不会破坏容器顺序的第一个位置,而这个位置标记了一个不小于value 的值[1] 。该函数为C++ STL内的函数。 lower_bound()返回一个 阅读全文
posted @ 2017-12-28 21:32 范仁义 阅读(337) 评论(0) 推荐(0)
摘要:CDOJ 1330 柱爷与远古法阵(高斯消元) 柱爷与远古法阵 柱爷与远古法阵 Time Limit: 125/125MS (Java/Others) Memory Limit: 240000/240000KB (Java/Others) Submit Status 众所周知,柱爷的数学非常好,尤其 阅读全文
posted @ 2017-12-28 18:45 范仁义 阅读(371) 评论(1) 推荐(0)
摘要:unique(V.begin(),V.end()) 重排容器算法:sort,unique unique 返回指向不重复区域之后一个位置的迭代器 阅读全文
posted @ 2017-12-28 18:42 范仁义 阅读(1286) 评论(0) 推荐(0)
摘要:将一组数从小到大排列并且剔除重复项(离散化) 这个功能涉及到一个数据结构(vector)和三个函数: 1:sort,将这组数字从小到大排列; 2:unique,将相邻且重复的数放到vector的尾部,然后返回指向第一个重复元素的迭代器(需要注意的是,被放在尾部的数据有时会产生变化,所以不能继续使用了 阅读全文
posted @ 2017-12-28 18:33 范仁义 阅读(583) 评论(0) 推荐(0)
摘要:poj 2104 K-th Number(主席树) 主席树就是持久化的线段树,添加的时候,每更新了一个节点的线段树都被保存下来了。 查询区间[L,R]操作的时候,只需要用第R棵树减去第L-1棵树就是区间[L,R]中增加的元素对应的树,然后查询这棵两棵树的差值对应的树就可以达到我们的目的。 每增加一个 阅读全文
posted @ 2017-12-28 15:16 范仁义 阅读(320) 评论(0) 推荐(0)
摘要:P3373 【模板】线段树 2 相对于线段树模板1有了区间乘的操作,所以增加了一个乘的延迟标记,当加和乘的次序不同的时候,我们要好好考虑这两个延迟标记对孩子的影响。所以这里我们是采取的是先乘后加。 线段树里面也要分清楚是延迟标记依赖就更新自己的值还是把延迟标记传递给孩子的时候才更新自己的值。 题目描 阅读全文
posted @ 2017-12-28 12:03 范仁义 阅读(1224) 评论(0) 推荐(1)
摘要:P3372 【模板】线段树 1 这个题目相对我们平时做的简单的线段树的题目(区间加,求最值)而言,这里是(区间加,求和),所以父亲节点延迟标记下传的时候父亲节点的值的增量要乘上孩子数,因为求最值的情况,整个区间同加最值不会改变。 t[id].s += (t[id].right - t[id].lef 阅读全文
posted @ 2017-12-28 10:47 范仁义 阅读(457) 评论(0) 推荐(0)
摘要:线段树总结 一、所有线段树的操作都是为了补全那颗树,所以心中有那棵树的图像就知道要进行那些操作。 二、各个操作里面的具体步骤 1、建树操作 2、标记下传操作 3、更新操作 更新操作有点像查询操作的一种,因为先找到位置了才能更新 不管以什么样的形势修改孩子之后,肯定都要更新父亲,线段树如此,分块如此, 阅读全文
posted @ 2017-12-28 10:39 范仁义 阅读(206) 评论(0) 推荐(0)
摘要:线段树空间究竟得开多大 线段树有两种储存,堆式存储和链式存储。 如果是堆式存储(i*2、i*2+1),则要开到 2*大于等于n的第一个2的整数次幂,如200000要开524288,30w要开1048576。如果是记录左右儿子,开2*n-1即可。 4-5就够了,再高还re就不是开的不够大的问题了 我们 阅读全文
posted @ 2017-12-28 08:51 范仁义 阅读(1042) 评论(0) 推荐(0)
摘要:BZOJ 3343: 教主的魔法(分块+二分查找) 3343: 教主的魔法 这个题目为什么不能用线段树做事因为C的值不固定,如果用线段树来做,那么每一个C值要从新建一遍线段树,时间会爆炸的 add操作: 1.同一块暴力修改,然后重构 2.两端不完整的暴力修改重构,中间完整的块加标记 查询操作: 1. 阅读全文
posted @ 2017-12-26 23:41 范仁义 阅读(309) 评论(0) 推荐(0)
摘要:poj2104 k-th number 主席树入门讲解 定义:主席树是一种可持久化的线段树 又叫函数式线段树 刚开始学是不是觉得很蒙逼啊 其实我也是 主席树说简单了 就是 保留你每一步操作完成之后的线段树 然后有可加减性 也就是说你每添加的一个点的那棵树都给你保留下来了 呃 。。。 这么说好像还是有 阅读全文
posted @ 2017-12-26 14:43 范仁义 阅读(348) 评论(0) 推荐(0)
摘要:poj 2104 K-th Number 主席树+超级详细解释 传送门:K-th Number 题目大意:给出一段数列,让你求[L,R]区间内第几大的数字! 在这里先介绍一下主席树! 如果想了解什么是主席树,就先要知道线段树,主席树就是n棵线段树,因为线段树只能维护最大值或者最小值,要想求出第二大的 阅读全文
posted @ 2017-12-26 13:41 范仁义 阅读(530) 评论(0) 推荐(0)
摘要:CDOJ 1324 卿学姐与公主(分块) 传送门: UESTC Online Judgehttp://acm.uestc.edu.cn/#/problem/show/1324 某日,百无聊赖的卿学姐打开了某11区的某魔幻游戏 在这个魔幻的游戏里,生活着一个美丽的公主,但现在公主被关押在了魔王的城堡中 阅读全文
posted @ 2017-12-26 13:01 范仁义 阅读(468) 评论(0) 推荐(0)
摘要:分块 最近突发奇想,到B站上看qscqesze神犇的每周算法讲堂,于是便学习了分块这个算法。 分块是一个很暴力的算法,按照某大神的说法,一般的区间问题都可以用他来解决,没有100分也有80分(一般会有80分,运气好有100分)。 分块是一个很暴力的算法,它可以完成几乎所有区间更新和区间查询问题,但效 阅读全文
posted @ 2017-12-26 11:28 范仁义 阅读(368) 评论(0) 推荐(0)

上一页 1 2 3 4 5 6 7 8 9 10 ··· 17 下一页