摘要: 题目大意 给袜子颜色的队列 进行区间询问[l,r] 输出该区间内随机抽两次抽到相同颜色袜子的概率 莫队算法可用于解决一类可离线且在得到区间[l,r]的答案后 可以O(1)或O(log2 n)时间内求出区间[l-1,r],[l+1,r],[l,r+1],[l,r-1]的答案的问题 两者区间只差了一个元 阅读全文
posted @ 2019-02-18 16:53 yyyr 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 题目描述 给定一棵有n个点的树 询问树上距离为k的点对是否存在。 (多次询问&&可离线) 我们先随意指定一个虚拟根root,将这棵树转化成无根树 树上的路径可以分为两类, 1.经过根节点u的路径 2.完全在u子树里(不经过u)的 对于1,用dis表示当前结点到根节点root的路径长度, 则root的 阅读全文
posted @ 2019-02-18 15:55 yyyr 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 一 . 最大公约数 gcd(a,b)= gcd(b,a mod b) 二 . 最小公倍数 lcm(m,n)=(m*n)/ gcd(m,n) 三 . 逆元 1.定义:在mod p的意义下,x 的乘法逆元 x^(-1)满足x*x^(-1) ≡ 1 (mod p)即 x*x^(-1)%p=1 x 的乘法逆 阅读全文
posted @ 2019-01-23 16:02 yyyr 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 节点 i 到节点 j 的最短路径有2 种可能:从 i 到 j 或从 i 经过若干个节点 k 到 j 循环三层 k , i , j 阅读全文
posted @ 2019-01-22 22:18 yyyr 阅读(89) 评论(0) 推荐(0) 编辑
摘要: luogu P2731 骑马修栅栏 Riding the Fences luogu P1341 无序字母对 度数:一个点上连接边的个数 1.欧拉道路:相当于一笔画 无向图:除了两个或没有点为奇点(度数为奇)以外,其余度数均为偶 有向图:只有两个点或没有点入度不等于出度,起点入度=出度-1,终点入度= 阅读全文
posted @ 2019-01-22 21:59 yyyr 阅读(203) 评论(0) 推荐(0) 编辑
摘要: luogu P3379 【模板】最近公共祖先(LCA) 最近公共祖先:是指在有根树中,找出某两个结点u和v最近的公共祖先。 对于有根树T的两个结点u、v,运用二进制拆分 1.将u,v中深度较深的那一个点向上走到和深度较浅的点 2.两个点一起向上走,直到走到同一个点时 u, v 的爸爸相同,这个点就是 阅读全文
posted @ 2019-01-22 21:27 yyyr 阅读(110) 评论(0) 推荐(0) 编辑
摘要: luogu P1440 求m区间内的最小值 单调队列:元素只能从队首与队尾操作 时间复杂度O(n) 维护出的队伍是查询范围内的而且是递增的,所以队头必定是查询区域内的最小值 阅读全文
posted @ 2019-01-22 10:35 yyyr 阅读(186) 评论(0) 推荐(0) 编辑
摘要: luogu P3865 【模板】ST表 利用递推解决区间最值问题 建成后,不支持修改区间上某一点的值 建表O(nlogn),查询O(1) 1<< t == 二的 t 次方 p[ k ][ i ]==从 i 开始包括 i 长为 2^k 的区间的最值 p[ 0 ][ i ]即为 a[ i ]的值本身 1 阅读全文
posted @ 2019-01-22 08:58 yyyr 阅读(132) 评论(0) 推荐(0) 编辑
摘要: P1020 导弹拦截 1.Dilworth定理:对于一个偏序集,最少链划分等于最长反链长度。 其实就是说,对于一个序列, 最大上升子序列长度 = 不上升子序列个数 最大不上升子序列长度 = 上升子序列个数 最大下降子序列长度 = 不下降子序列个数 最大不下降子序列长度 = 下降子序列个数 所以这道题 阅读全文
posted @ 2019-01-22 07:49 yyyr 阅读(177) 评论(3) 推荐(0) 编辑
摘要: 寻找每一个点到原点的最小距离 阅读全文
posted @ 2019-01-21 21:54 yyyr 阅读(156) 评论(0) 推荐(0) 编辑
摘要: i 为点,k 为单向边 head[ i ] = k i 号点所出发的第一条边的编号为k nxt[ k1 ] = k2 k1 号边同起点的下一条边的编号为k2 to[ k ]= i k号边所指向点 val[ k ] = v k号边的边权为v 若为双向边,就建两个单向边 阅读全文
posted @ 2019-01-21 21:47 yyyr 阅读(92) 评论(0) 推荐(0) 编辑
摘要: 数组:查找O(1),插入删除O(n) 链表:查找O(n),插入删除O(1) nxt[ i ] 是 i 点的下一个点 阅读全文
posted @ 2019-01-21 21:37 yyyr 阅读(161) 评论(0) 推荐(0) 编辑
摘要: v个人,e条边,时间复杂度O(ve) 能匹配就尽量匹配,不能匹配就尽可能改变之前的匹配来使这次可以匹配 阅读全文
posted @ 2019-01-21 21:33 yyyr 阅读(155) 评论(0) 推荐(0) 编辑
摘要: luogu P3366 【模板】最小生成树 在连接各个点的所有路径中,选取最短的路径连接所有点 n个顶点,e条边,时间复杂度O(eloge) kruskal主要思路: 输入边,用结构体储存 用结构体快排以边比较从小到大快排 建一个并查集,并初始化并查集(并查集代表两个点有没有在同一个树里面 for( 阅读全文
posted @ 2019-01-21 21:22 yyyr 阅读(113) 评论(0) 推荐(0) 编辑
摘要: luogu P3378 【模板】堆 luogu P4779 【模板】单源最短路径(标准版) 堆是一个完全二叉树 优先队列(系统自带小根堆) #include<queue>头文件 q.empty()如果队列为空,则返回true,否则返回false q.size()返回队列中元素的个数 q.pop()删 阅读全文
posted @ 2019-01-21 21:11 yyyr 阅读(133) 评论(0) 推荐(0) 编辑
摘要: luogu P3372 【模板】线段树 1 线段树专门用来处理区间问题的,包括最大值,最小值,和 阅读全文
posted @ 2019-01-21 20:58 yyyr 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 有许多种物品,每种物品有多个,个数已知,求最大价值 luogu P1776 宝物筛选_NOI导刊2010提高(02) 假设物品 a 有 34 个 那么将34拆分为1,2,4,8,16,3总共6个数 这6个数可以任意组合表示从1到34所有的数 那么就将1个a物品,2个a物品,4个a物品......各自 阅读全文
posted @ 2019-01-21 20:52 yyyr 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 有许多种物品,每种物品有无数个,求最大价值 luogu P1616 疯狂的采药 01 背包的滚动数组。我们要求倒序遍历,才能保证了每件物品只选用一次 将01背包的第二层循环反过来即为完全背包 此时无法保证每个物品只被选取了一次,相当于物品有无数个 阅读全文
posted @ 2019-01-21 20:46 yyyr 阅读(141) 评论(0) 推荐(0) 编辑
摘要: luogu P1588 丢失的牛 由树的顶点开始,遍历它的子节点,全部压入队列,之后再搜索子节点的所有子节点,是一层层搜索 阅读全文
posted @ 2019-01-21 20:43 yyyr 阅读(89) 评论(0) 推荐(0) 编辑
摘要: 有许多种物品,每种物品只有一个,求最大价值 lougu P1048 采药 luogu P1049 装箱问题 luogu P1060 开心的金明 luogu P1164 小A点菜 dp[ i ] [ j ] 表示放前 i 个物品时,重量 j 能获得的最大价值 对于第 i 个物品,只有放与不放两种可能 阅读全文
posted @ 2019-01-21 20:36 yyyr 阅读(136) 评论(0) 推荐(0) 编辑