- 博客(24)
- 收藏
- 关注
原创 OI学习笔记之倍增求LCA
倍增求LCA一,首先回顾一下什么是倍增算法,倍增算法就是改善一下一步一步跳的缓慢,改为跳2^k 步从而达到加快速度的目的,倍增算法一般要先预处理一个数组,代表从从某个点开始跳2^k 个数到达哪里,比如ST表的ST[i][j]代表从第i个数向后2^j 个数,树上倍增求LCA的f[i][j]表示i的第2^j 个祖先是谁。二,最近公共祖先LCA概念篇1,祖先:与x处于同一条重链且深度小于点x的...
2019-08-11 06:25:50
350
原创 OI学习笔记之图论强连通分量与缩点
强连通分量与缩点没有用的话qaq :Ummmm…图论的大部分知识本来早就有学过,只是一直没有写成博文来梳理,但既然上了qbxt DP图论就写一篇来总结下,主要是来听DP的,但…由于太菜的原因,DP听得天花乱坠QWQ一,基础知识篇1,强连通:如果有两个点u和v,如果u能到达v,v也能到达u,就称u和v是强连通的。2,强连通分量:有向图极大的强连通子图。3,强连通图:有向图中任意两个顶...
2019-08-11 00:00:05
409
原创 OI学习笔记之图论最短路算法
最短路没有用的话qaq :Ummmm…图论的大部分知识本来早就有学过,只是一直没有写成博文来梳理,但既然上了qbxt DP图论就写一篇来总结下,主要是来听DP的,但…由于太菜的原因,DP听得天花乱坠QWQ图中的最短路算法分为单源最短路算法(dijkstra,Bellman-food,spfa)和多源最短路算法(floyd),单源最短路算法是求图上一点到其他任意一点的最短路径,多源最短路算...
2019-08-10 19:57:14
359
1
原创 OI学习笔记之图论最小生成树
最小生成树没有用的话qaq :Ummmm…图论的大部分知识本来早就有学过,只是一直没有写成博文来梳理,但既然上了qbxt DP图论就写一篇来总结下,主要是来听DP的,但…由于太菜的原因,DP听得天花乱坠QWQ一,最小生成树的定义一个有 n 个结点的连通图的生成树是原图的极小连通子图,且包含原图中的所有 n 个结点,并且有保持图连通的最少的边。 ——百度百科二,最小生成树算法顾...
2019-08-10 18:47:26
316
原创 OI学习笔记之图论拓扑排序
拓扑排序没有用的话qaq :Ummmm…图论的大部分知识本来早就有学过,只是一直没有写成博文来梳理,但既然上了qbxt DP图论就写一篇来总结下,主要是来听DP的,但…由于太菜的原因,DP听得天花乱坠QWQ有向无环图的拓扑排序是将DAG中的所有节点排序为线性序列,使得对于有向无环图的所有<s,e>∈E,都有s在线性序列中出现在u的前面。有向图中若有环则一定不存在拓扑排序,若...
2019-08-09 23:33:15
273
原创 OI学习笔记之图的遍历
图的遍历没有用的话qaq :Ummmm…图论的大部分知识本来早就有学过,只是一直没有写成博文来梳理,但既然上了qbxt DP图论就写一篇来总结下,主要是来听DP的,但…由于太菜的原因,DP听得天花乱坠QWQ图的遍历分为两种,图的深度优先遍历和图的广度优先遍历,深度优先遍历是用栈来实现的,可以用手写栈,也可以递归(要小心没开栈的时候爆栈)一,图的深度优先遍历实现很简单,和dfs一样,...
2019-08-09 21:29:39
486
原创 OI学习笔记之图论基础知识
图论基础知识没有用的话qaq :Ummmm…图论的大部分知识本来早就有学过,只是一直没有写成博文来梳理,但既然上了qbxt DP图论就写一篇来总结下,主要是来听图论的,但…由于太菜的原因,DP听得天花乱坠QWQ一,图:图是边和点组成的几何体 G=< V , E > V是点集合,E是边集形如这样的东西就是一个图二,图的相关基本概念1,边:图上连接点和点之间的东西叫做边...
2019-08-09 19:23:07
1153
1
原创 动态规划之数位DP
数位动态规划常用语解决动态规划中的计数类问题(计数类问题就是求方案数的问题),具体,一般会给定一个区间[x,y],让你求这个区间里满足某种性质的数字的个数。从这个问题出发,给定区间[x,y],让我们求区间中满足某种性质的数字的个数,最简单的暴力想法是,枚举区间中的每一个数,逐个判断,确定满足条件的数字的个数,当数据范围较大时,这种方法显然会超时,因此我们引入数位dp。一, 数位dp的基本思想...
2019-08-08 15:56:24
275
原创 DP入入门——P3009利润
题意奶牛们开始了新的生意,它们的主人约翰想知道它们到底能做得多好。这笔生意已经做了N(1≤N≤100,000)天,每天奶牛们都会记录下这一天的利润Pi(-1,000≤Pi≤1,000)。约翰想要找到奶牛们在连续的时间期间所获得的最大的总利润。(注:连续时间的周期长度范围从第一天到第N天)。请你写一个计算最大利润的程序来帮助他。DP入门系列题干分析:状态:设数组dp[i]为前i天的最大连...
2019-08-07 20:21:26
631
原创 动态规划入门
一,概念篇1,动态规划:通过计算出小问题的最优解,可以推出大问题的最优解,从而可以推出更大问题的最优解,最小问题即是边界情况。2,子问题(小问题):子问题是一个与原问题有着类似的结构,但规模比原问题小的问题。3,动态规划的基本思想:将待求解的问题划分为若干个阶段(子问题),按顺序求解子问题,子问题的求解为更大子问题的求解提供信息,由于动态规划解决的问题多数有重叠子问题这个特点,为减少重复计算...
2019-08-06 19:09:26
302
原创 [BOI2003] P1892 团伙题解
依然是扩展域并查集,思路与食物链完全相同,略简单于食物链了解题意抓住要点我朋友的朋友是我的朋友;我敌人的敌人也是我的朋友。迎刃而解AC代码#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#define maxn 1005using n...
2019-07-30 20:53:46
233
原创 [NOI2001] P2024 食物链题解
苦涩地写这片题解…,这道题我做了五个小时,原因竟是,我把题干中最重要的一句话当成了废话555。点击跳转了解题意题目背景中写道“动物王国中有三类动物 A,B,C,这三类动物的食物链构成了有趣的环形。A 吃 B,B吃 C,C 吃 A。”我开始只以为这是一句…无关紧要的话,后来一直30分才发现,动物王国真的只有三种动物。这道题依然是有两种做法带权并查集和扩展域并查集,显然我只会扩展域并查集,我...
2019-07-30 20:18:26
279
原创 [NOIP2010] P1525关押罪犯题解
点击跳转了解题意这是一道进阶的并查集的题目,其做法有两种,第一种是带权并查集,新开一个数组维护每个节点和根节点的关系,但由于博主太菜,这个做法研究了一下午也没有搞懂,所以就采用了我认为更好理解一点的扩展域并查集,这道题中要求输出的最大冲突值最小,所以贪心的来做,我们先按冲突值从大到小排一个序,尽量不让冲突值大的事件发生,题目中说共有两个监狱,有m对罪犯之间有冲突,只要这两个罪犯关在了同一间监狱里...
2019-07-30 15:26:14
177
原创 OI学习笔记之数据结构——带权并查集
带权并查集是一种并查集的操作,其功能与基础并查集相同,支持查询和合并操作。除此之外,带权并查集还维护了子节点与父节点之间的关系,在一个有序的集合中,某个元素到根节点的距离(例:NOI2002银河英雄传说),其操作是除了维护节点关系数组f以外,还维护了多个能表示元素之间关系的数组如value等带权并查集的基本操作1——merge//比如要维护有序队列中某个点离祖宗的距离inline void ...
2019-07-28 23:48:20
190
原创 P1196 [NOI2002] 银河英雄传说题解
跳转了解题意这是一道带权并查集的入门题目,权即是关系,这个题的权是该节点距离特征性元素的距离,以及以x为开始的集合的元素个数如不了解带权并查集,建议先学习一下再做AC代码:#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<...
2019-07-28 19:24:03
417
原创 [JSOI2008] P1197 星球大战题解
点击了解题意显然这是一道并查集判联通块的题目,并查集的作用是合并和查询,题目中要求输出炸毁某个点后连通块的个数,但并查集貌似不支持拆分操作 ,可能是我不会,所以我们可以期初先把所有点先摧毁,看看有多少联通块,然后倒着来做,从摧毁的最后一个点开始修建,看看每修建一个点,能减少多少个联通块,每修建一个点记录一下答案,最后正序输出即可。AC代码#include<cstdio>#inc...
2019-07-28 15:25:47
179
原创 洛谷P1551亲戚题解
这是一道并查集的板子题,其中给定族谱对应的是并查集的merge操作,查询x,y是否是亲戚对应的是并查集的查询操作附AC代码#include<cstdio>#include<iostream>using namespace std;int f[5005],n,m,k;int find(int a){ if(f[a]==a) return f[a]; r...
2019-07-28 00:20:07
300
原创 洛谷P1111修复公路题解
跳转理解题意这道题是洛谷试炼场并查集板块的第一题,但却是一道最小生成树,至于为什么在并查集的版块里,应该是kruskal算法运用到了并查集判断如果添加某条边是否会产生环,题目中要求如何在最短时间内使图中任意两个点都能互相到达,因为所有道路可以同时开始修复,所以题目就是让我们求最小生成树中最长的那条边。这是一道最小生成树(kruskal)的板子题,同时要注意公路无法修建的情况,即原图不连通不存在最...
2019-07-28 00:14:38
322
原创 OI学习笔记之数据结构——基础并查集
并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题。常常在使用中以森林来表示。一,对并查集的认识并查集是树形结构,常常在题目中用来判断两个元素是否属于同一个集合,每个集合都有一个特征性元素称为这个集合的father,如果两个元素的father相同,则说明这两个元素属于同一集合,若这两个元素的father不相同,则说明这两个元素不属于一个集合。并查集就是这样一种支持合并和查询的树...
2019-07-27 23:51:53
333
原创 OI学习笔记之数据结构——树状数组
树状数组复杂度 O(logn).树状数组是一种维护前缀和,区间最大值,区间最小值,区间异或和等满足交换律的东西的数据结构,其支持单点修改和区间查询。树状数组其实并不算一棵树,它是由数组+二进制的操作实现的,只是在实现的过程中我们借助了树形结构的思想,因此树状数组并不需要建树等操作。一,认识树状数组树状数组也是一棵二叉树,长相类似于一棵偏沉的线段树,其中最下面一排数组a代表给定的序列a1,...
2019-07-27 20:00:55
497
原创 洛谷P2251质量检测题解
点击跳转查看题意由题意显而易见可得,这是一道RMQ的裸题,ST表的建表复杂度为O(nlogn),查询为O(1),能完美跑过此题的数据结构,这题的题意是查询以每个数为起点长度为m的区间内部的最小值,我们只需要枚举一下起点,每个区间依次查询就好,这题是一道ST表的裸题#include<cstdio>//100#include<iostream>#include<c...
2019-07-27 16:29:31
224
原创 OI学习笔记之数据结构——ST表
ST表是用于解决RMQ问题的一种数据结构(RMQ:询问某个区间内的最大值或最小值),其主要运用的是倍增和动态规划的思想。ST表复杂度:预处理O(nlogn) 查询 O(1)一,ST表的认识ST表的实现,我们用一个二维数组st[i][j]来建立ST表,其中st[i][j]表示的是,从第i个数开始往后2^j个数中的最大值或者最小值。二,建立ST表在建立ST表的过程中,我们主要运用了动态规划,...
2019-07-27 15:48:49
627
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人