图论

[bzoj 2115]线性基+图论

怎甘沉沦 提交于 2020-02-08 11:25:18
题目链接: http://www.lydsy.com/JudgeOnline/problem.php?id=2115 给定一个带权无向图,要找出从1到n路径权值异或和最大的那一条的路径异或和。 考虑1到n的任意一条路径,都可以表示为1到n的一条路径,加上图上任意的一些环(1所在的那个连通块)。之所以可以这样,是因为图是连通的,而且无向的,走过去也可以走回来,所以假设当前走到了i号点,我想去走一些环,那么可以i->j->在环j上走一圈->j->i,这条路径上仅仅是异或上了一次环的权值(i->j和j->i的权值被抵消了)。 所以就把所有的环插入线性基就好了。最大值可以从高位到低位贪心来搞。 #include<bits/stdc++.h> using namespace std; typedef long long ll; const int maxn=50005; const int maxm=100005*2; vector< pair<int,ll> > G[maxn]; ll a[maxn]; vector<ll> base; void insert(ll x) { for (int i=0;i<base.size();i++) x=min(x,x^base[i]); if (x) base.push_back(x); } void dfs(int u,int fa,ll now

数学建模 图论最短路径问题

烂漫一生 提交于 2020-02-08 04:30:32
1、图的基本概念 图论中的图(Graph)是由若干给定的点及连接两点的线 所构成的图形,这种图形通常用来描述某些事物之间的某种 特定关系,用点代表事物,用连接两点的线表示相应两个事 物间具有这种关系。 一个图可以用数学语言描述为G(V(G),E(G))。V(vertex)指 的是图的顶点集,E(edge)指的是图的边集。根据边是否有方向,可将图分为有向图(图一)和无向图(图二)。另外,有些图的边上还可能有权值,这样的图称为有权图(图三)。 2、作图 1、 在线作图 2、matlab作图 % % Matlab作无向图 % ( 1 )无权重(每条边的权重默认为 1 ) % 函数 graph ( s , t ) :可在 s 和 t 中的对应节点之间创建边,并生成一个图 % s 和 t 都必须具有相同的元素数;这些节点必须都是从 1 开始的正整数,或都是字符串元胞数组。 s1 = [ 1 , 2 , 3 , 4 ] ; t1 = [ 2 , 3 , 1 , 1 ] ; G1 = graph ( s1 , t1 ) ; plot ( G1 ) % 注意哦,编号最好是从 1 开始连续编号,不要自己随便定义编号 s1 = [ 1 , 2 , 3 , 4 ] ; t1 = [ 2 , 3 , 1 , 1 ] ; G1 = graph ( s1 , t1 ) ; plot ( G1 ) %

数据挖掘学习之路一:数据挖掘认识

半世苍凉 提交于 2020-02-08 00:09:51
1.什么是数据挖掘? 数据挖掘是人工智能和数据库领域研究的热点问题,所谓数据挖掘是指从数据库的大量数据中揭示出隐含的、先前未知的并有潜在价值的信息的非平凡过程。数据挖掘是一种决策支持过程,它主要基于人工智能、机器学习、模式识别、统计学、数据库、可视化技术等,高度自动化地分析企业的数据,作出归纳性的推理,从中挖掘出潜在的模式,帮助决策者调整市场策略,减少风险,作出正确的决策。知识发现过程由以下三个阶段组成:①数据准备;②数据挖掘;③结果表达和解释。数据挖掘可以与用户或知识库交互。 数据挖掘就是通过分析采集而来的数据源,从庞大的数据中发现规律,找到宝藏。 2.数据挖掘的基本流程 数据挖掘可分为6个步骤:  1.商业理解:数据挖掘不是我们的目的,我们的目的是更好地帮助业务,所以第一步我们要从商业的角度理解项目需求,在这个基础上,再对数据挖掘的目标进行定义。  2.数据理解:尝试收集部分数据,然后对数据进行探索,包括数据描述、数据质量验证等。这有助于你对收集的数据有个初步的认知。  3.数据准备:开始收集数据,并对数据进行清洗、数据集成等操作,完成数据挖掘前的准备工作  4.模型建立:选择和应用各种数据挖掘模型,并进行优化,以便得到更好的分类结果  5.模型评估:对模型进行评价,并检查构建模型的每个步骤,确认模型是否实现了预定的商业目标  6.上线发布: :模型的作用是从数据中找到金矿

图论

南笙酒味 提交于 2020-02-05 19:02:37
文章目录 1.最小生成树 1.1普利姆(Prim)算法 1.2卡鲁斯卡尔(Kruskal)算法 2.最短路径 2.1迪杰斯特拉(Dijikstra)算法 2.2弗洛伊德(Floyd)算法 3.拓扑排序 4.关键路径 1.最小生成树 在一给定的无向图G = (V, E) 中,(u, v) 代表连接顶点 u 与顶点 v 的边,而 w(u, v) 代表此边的权重,若存在 T 为 E 的子集且为无循环图,使得 w(T) 最小,则此 T 为 G 的最小生成树。 最小生成树其实是最小权重生成树的简称。 生成树和最小生成树有许多重要的应用。 例如:要在n个城市之间铺设光缆,主要目标是要使这 n 个城市的任意两个之间都可以通信,但铺设光缆的费用很高,且各个城市之间铺设光缆的费用不同,因此另一个目标是要使铺设光缆的总费用最低。这就需要找到带权的最小生成树。 使用例 用最小的权值连接所有顶点 图的实现类 JAVA实现数据结构:图 1.1普利姆(Prim)算法 Prim算法简述 1).初始化:Vnew= {x},其中x为集合V中的任一节点(起始点),Enew= {},为空; 2).重复下列操作,直到Vnew= V: a.在集合E中选取权值最小的边<u, v>,其中u为集合Vnew中的元素,而v不在Vnew集合当中,并且v∈V(如果存在有多条具有相同权值的边,则可任意选取其中之一); b

NOI图论大全

泪湿孤枕 提交于 2020-02-01 22:34:07
前言   本文诣在实现NOI图论的全覆盖,各知识点以提纲的形式出现,未涉及具体原理及实现,但附有优质的讲解blog的网址,用于有一定算法基础的同学复习、巩固、加深。 Part1:点分治 & 点分树 一 . 点分治概述 点分治是一种在树上比较常用的分治方法,适用于一些树上的数据结构类问题。 算法大致流程: 求出当前部分树的重心 计算与当前重心相关的答案,如:经过该重心的路径条数、长度等。 删除重心,将当前部分树分成更多部分,重复上述操作。 代码 主要用处:处理路径信息,因为: 每次以重心分割树,可以处理经过当前重心的路径 每次处理的路径不重复、不疏漏 将路径分为不相干的两段,方便数据结构处理。 复杂度:O(nlogn + ∑ 单次处理关于重心答案)。 点分治讲解blog 二 . 点分树概述 定义:使结点x与所在部分树中的重心y连边,所得到的树形结构叫做点分树。 求点分树的方法就是在 divide(rt) 前加一句 add_edge(x,rt) 即可。 主要用处:让点分治实现修改操作。 复杂度:同点分治复杂度。 三 . 例题选讲     T1. [CF293E]Close Vertices     大部分点分治的唯一问题:如何计算经过重心x的合法路径条数。方法如下: 计算该部分树中每个结点到重心的距离及边权和,可通过一遍DFS实现。 计算两两路径配对所得的合法路径条数:将结点按长度排序

算法入门《数据结构与算法图解》+《我的第一本算法书》+《学习JavaScript数据结构与算法第3版》

时光毁灭记忆、已成空白 提交于 2020-02-01 00:48:04
最近几年学前端的人会越来越多,再加上前端的范围越来越广,从前端发展为全栈,数据结构和算法的功底要求势必将越来越高。 《数据结构与算法图解》电子书及代码是数据结构与算法的入门指南,不局限于某种特定语言,略过复杂的数学公式,用通俗易懂的方式针对编程初学者介绍数据结构与算法的基本概念,培养编程逻辑。主要内容包括:为什么要了解数据结构与算法,大O表示法及其代码优化利用,栈、队列等的合理使用,等等。 《算法图解》电子书非常的体贴,看起来也很快,用图来解释算法是非常好的想法,可作为学习数据结构和算法的电子资料,可以给你一个整体的感觉,很多细节需要继续学习,例子也很适合笔算,一步步的图解也很好! 《我的第一本算法书》电子书采用大量图片,通过详细的分步讲解,以直观、易懂的方式展现了7个数据结构和26个基础算法的基本原理。第1章介绍了链表、数组、栈等7个数据结构;从第2章到第7章,分别介绍了和排序、查找、图论、安全、聚类等相关的26个基础算法,内容涉及冒泡排序、二分查找、广度优先搜索、哈希函数、迪菲 - 赫尔曼密钥交换、k-means 算法等。 配合《算法图解》,算法动画图解APP,《学习JavaScript数据结构与算法第3版》电子书,非常直观的通过图示的方式分解各算法每一步的变化,对于初学者来说非常友好。我同时配合《算法图解》一起看,效率非常高。 《学习JavaScript数据结构与算法第3版

【图论】广度优先搜索和深度优先搜索

大憨熊 提交于 2020-01-31 12:48:29
写在最前面的 两种图的遍历算法在其他图的算法当中都有应用,并且是基本的图论算法。 广度优先搜索 广度优先搜索(BFS), 可以被形象的描述为“浅尝辄止”, 具体一点就是每个顶点只访问它的邻接节点(如果它的邻接节点没有被访问)并且记录这个邻接节点,当访问完它的邻接节点之后就结束这个顶点的访问。 广度优先用到了“先进先出”队列,通过这个队列来存储第一次发现的节点,以便下一次的处理;而对于再次发现的节点,我们不予理会——不放入队列,因为再次发现的节点: 无非是已经处理完的了; 或者是存储在队列中尚未处理的。 《算法导轮》对两种搜索都采用了很聪明的做法,用白色WHITE来标志未发现的节点,用灰色GRAY来标志第一次被发现的节点,用黑色BLACK来标志第二次被发现的节点。 于是有了: BFS(G,s) for each vertex v in V[G] status[v] = WHITE /******其他初始化******/ status[s] = GRAY //s是原点 queue q 入队(q,s); while q非空 t = 出队(q); for each vertex v in Adj[t] //与t邻接的点 if status[v] = WHITE //只对未访问的操作 status[v] = GRAY //标记为第一次访问 /******其他操作******/ 入队(q,v)

图论专项测试

扶醉桌前 提交于 2020-01-30 23:01:46
A. center 分别考虑每一条边。 二分答案,问题转化为判定是否存在可行区间。 然后列式子发现存在三种限制的形态,而其中的一种(含有或运算)并不是一个线性算法能够解决的。 盲猜这种情况并不多见,剪枝暴力$AC$。 个人认为三分的算法是伪的,见数据(不能hack三分算法,但不单谷): 3 3 1 2 1 1 3 1 2 3 1 B. escape 考虑一条次短路径,可以表示为$1$->最短路->$a$->不经过最短路边->$b$->最短路->n。 然后发现我们只关注这个次短路大小,并不关注具体是谁。 对于每一个$b$,我们只关注最短的$1$->$a$->$b$。对于每一个$a$是同理的。 而$a!=b$,所以通过二进制分组优化这个暴力的过程,跑多源点多汇点的最短路就可以了。 C. chip 一个很神奇的网络流建图,这里写的是$Lrefrain$大神的做法,题解的消圈算法待补。 考虑枚举最终的零件数*$\frac{A}{B}$,显然这个只有$n$种不同的取值。 于是只需要考虑前两个限制,跑出最大的答案,并检测最终答案是否在合法区间内尝试更新答案。 令$h_i$表示第$i$行中C和.的个数,$l_i$表示第i列中C和.的个数。这里设我们枚举的限制为$lim$。 将行、列各$n$个点构造一个二分图,连边$(s,i)$。流量为$h_i$,费用为0。列与$t$连边同理。 对于$map_{i

双指针,BFS与图论(一)

﹥>﹥吖頭↗ 提交于 2020-01-30 20:21:49
(一)双指针 1.日志统计 小明维护着一个 程序员 论坛。现在他收集了一份”点赞”日志,日志共有 N 行。 其中每一行的格式是: ts id 表示在 t s 时刻编号 i d 的帖子收到一个”赞”。 现在小明想统计有哪些帖子曾经是”热帖”。 如果一个帖子曾在任意一个长度为 D 的时间段内收到不少于 K 个赞,小明就认为这个帖子曾是”热帖”。 具体来说,如果存在某个时刻 T 满足该帖在 [ T , T + D ) 这段时间内(注意是左闭右开区间)收到不少于 K 个赞,该帖就曾是”热帖”。 给定日志,请你帮助小明统计出所有曾是”热帖”的帖子编号。 输入格式 第一行包含三个整数 N , D , K 以下 N 行每行一条日志,包含两个整数 t s 和 i d 。 输出格式 按从小到大的顺序输出热帖 i d 。 每个 i d 占一行。 数据范围 1 ≤ K ≤ N ≤ 10 5 , 0 ≤ t s , i d ≤ 10 5 , 1 ≤ D ≤ 10000 输入样例: 7 10 2 0 1 0 10 10 10 10 1 9 1 100 3 100 3 输出样例: 1 3 解题思路:排序+双指针 ①对所有的赞按时间排序 ②通过双指针i,j维护长度不大于d的区间,并记录该帖子中的获赞数 #include<iostream> #include <algorithm> #include

图论学习笔记

橙三吉。 提交于 2020-01-30 18:21:04
目录 图的概念 简史 欧拉与戈尼斯堡七桥问题 图的基本概念 图 图的表示 图模型 子图 度 图的概念 简史 欧拉与戈尼斯堡七桥问题 等价问题:“欧拉一笔画” \(\equiv\) 与任一个顶点相关联的边必须是偶数条。 图的基本概念 图 无向图 邻接与关联: 另一种表示方法:(p,q)图 图相等、特殊的图(平凡图、零图) 有向图 疑惑: 无向图是集合反自反、对称的关系。有向图中为保证反自反性,去掉了自身到自身的有向线段 \(\{(v,v)|v \in V\}\) 。但是,图是不允许存在自身到自身的边吗? 图的表示 图解法与邻接矩阵法: 问题: 关系的闭包在图中的意义是什么? 图模型 利用图建模现实问题,并用图的理论加以解决的能力。 例子:结婚问题、地图与导航 子图 特例:生成子图 记号:去除顶点u,去除边{u,v} 尤其地,注意去除边的记号不是去除u、v两个顶点。 度 【定理1】 来源: https://www.cnblogs.com/letisl/p/12243273.html