首页 > 其他分享 >7.20 图论笔记

7.20 图论笔记

时间:2023-07-21 19:11:34浏览次数:47  
标签:图论 题目 染色 短路 路径 7.20 笔记 Solution 最短

T1

题目

• 在 \(N\) 个点 \(P\) 条边的加权无向图上求出一条从 \(1\) 号结点到 \(N\) 号结点的路径,使路径上第 \(K + 1\) 大的边权尽量小。
• \(0 ≤ K < N ≤ 1000\), \(1 ≤ P ≤ 2000\)。

Solution

• 一道自己做出来的蓝。
• 二分第 \(K + 1\) 大边权为 \(mid\),每次把边权 \(\leq mid\) 的都设为 \(0\),否则设为 \(1\)。
• 从节点 \(1\) 跑一次最短路,当 \(dist[n] \leq mid\) 时则满足条件,否则不满足。
• 正确性显然。

T2

题目

• 树形黑暗城堡有 \(N\) 个房间,\(M\) 条可以制造的双向通道,以
及每条通道的长度。
• 设 \(D_i\) 为如果所有的通道都被修建,第 \(i\) 号房间与第 \(1\) 号房间的最短路径长度;
• 而 \(S_i\) 为实际修建的树形城堡中第 \(i\) 号房间与第 \(1\) 号房间的路径长度;
• 要求对于所有整数 \(i\) \((1 ≤ i ≤ N)\),有 \(S_i = D_i\) 成立。
• 有多少种不同的城堡修建方案,答案对 \(2 ^ {31} − 1\) 取模。

Solution

• 简单来说,题目要求最短路径树的数量。
• 最短路径树是网络的源点到所有结点的最短路径构成的树。
• 我们从节点 \(1\) 跑一遍最短路。
• 当 \(dist[v] = dist[u] + e(u, v)\) 时,表明 \(v\) 的最短路是由 \(u\) 得到的,那 \(e(u, v)\) 就可以作为最短路径树上的边。
• 对每个点计算出它可作为最短路径树上的边的数量,根据乘法原理,乘起来就是答案。

T3

题目

• 要给 \(n\) 口矿井供电。
• 为了保证电力的供应,有两种办法:
\(1.\) 在这一口矿井上建立一个发电站,费用为 \(v\)。
\(2.\) 将这口矿井与另外的已经有电力供应的矿井之间建立电网,费用为 \(p\)。
• 计算保证所有矿井电力供应的最小花费。
• \(1 ≤ n ≤ 300\), \(0 ≤ vi, p_{ij} ≤ 10^5\)。

Solution

• 简单来说,要使每个点所在的联通块的都至少有一个发电站的最小花费。
• 建立一个虚拟源点 \(0\),给每口矿井连一条边权为 \(v_i\) 的边,跑一遍最小生成树即可。

T4

题目

• \(N\) 头牛(每头牛的编号就是它所在农场的编号)要去参加一场在编号为 \(x\) 的牛的农场举行的派对。
• 有 \(M\) 条有向道路,每条路长 \(T_i\);
• 每头牛都必须参加完派对后回到家,每头牛都会选择最短路径。
• 求这 \(N\) 头牛的最短路径(一个来回)中最长的一条的长度。
• \(1 ≤ N ≤ 1000\),\(1 ≤ x ≤ N\)。
• \(1 ≤ M ≤ 100000\),\(1 ≤ T_i ≤ 100\)。

Solution

• 扇贝题目。
• 先跑一遍各点到 \(x\) 的距离,然后再跑一遍 \(x\) 到各点的距离即可。
• 但是朴素做法,虽然可以通过此题,但我们考虑优化。
• 建立正图和反图,都以 \(x\) 为起点,预处理出到每个点的最短路 \(d_1\) 和 \(d_2\)。
• 正图 \(d_1\) 为回家路,反图 \(d_2\) 为去 \(x\) 的路。
• 枚举每个点的 \(d_1 + d_2\),取最大值即可。

T5

题目

• \(N\) 个点 \(M\) 条边的有向图,边有黑白两种颜色。现在要给点染色,每个点染成黑或白色。
• 白点只能走它连出去的白边,黑点只能走它连出去的黑边。
• 问是否存在一种染色方案,使得不存在一条 \(1 → n\) 的路径。如果存在这样的染色方案,在第一行输出 \(−1\),否则输出 \(→ n\) 最长的最短路径长度,每条边长度为 \(1\) 。在第二行,输出对应第一行答案的染色方案。
• \(1 ≤ N, M ≤ 500000\)。

Solution

• 考虑从 \(n\) 出发进行染色,尽可能让每一条路不可经过,这样也是最大化其他点到 \(n\) 的最短路。
• 如果当前为 \(u\) ,点 \(v\) 和 \(u\) 有边,如果只有一种颜色的边,那么这条路是可以禁止经过的,将 \(v\) 设置成与边不同的颜色。如果有不同颜色的边,那么 \(v\) 的颜色无论怎么染色都可以到达 \(u\)。
• 从 \(n\) 开始进行反向 BFS 。
• 当第一次遍历到未染色的点 \(x\),将点 \(x\) 设为与边不同的颜色。如果遍历到染色的点,并且染色的点与边颜色相同,说明此点无法避开,加入到队列中,更新到 \(n\) 的最短路,直到 \(1\) 入队。
• 时间复杂度为 \(\mathcal{O}(N + M)\)

T6

题目

• 在一个有 \(N\) 个顶点和 \(M\) 条边的图上有两个人,分别在 \(S\) 号节点和 \(T\) 号节点。他们要各自走到对面(即在 \(S\) 的人走到 \(T\) ,在 \(T\) 的人走到 \(S\))。
• 给你 \(M\) 条边,描述为 \(U\) \(V\) \(D\) 分别表示该边连接的两个点及通过边的时间。
• 求两人经过最短路径(可能有多条)且不相遇(在同一单位时间内都在一条边或一个点上)的方案数。
• \(N ≤ 100000,M ≤ 200000\)。

Solution

咕咕咕。

T6

题目

• 有一个地铁线路图,可以看做 \(N\) 个站点,\(M\) 条线路。每条线路由一个公司所有。
• 如果你乘坐同一公司的铁路,只需要花费 \(1\) 元,如果更换其他公司铁路,还需要再花费 \(1\) 元,如果再次换回原来的公司,还需要花费 \(1\) 元。
• 问从 \(1\) 号站点到 \(N\) 号站点的最小花费。
• \(N, M ≤ 200000\)。

Solution

• 由于切换连通块一定会导致答案 \(+1\),因此只要统计连通块的个数即可。
• 最朴素的建图方式是:把连在一起的同一城市的道路两端的点放进一个连通块内,块内每个点两两之间连一条权值为 \(1\) 的边。但是,边数过大,这样会爆空间。
• 考虑优化。
• 尝试建立虚点。
• 对于每个连通块,建立一个虚点。把连通块内每个点和虚点连一条权值为 \(0.5\) 的边。这样,任意两点都能以虚点为中转站来保持距离仍为 \(1\)。
• 优化后,点的数量不超过 \(n + m\),边的数量不超过 \(2m\)。

标签:图论,题目,染色,短路,路径,7.20,笔记,Solution,最短
From: https://www.cnblogs.com/User90174/p/17572238.html

相关文章

  • Mybatis笔记
    如何获得Mybatis?maven仓库:<!--https://mvnrepository.com/artifact/org.mybatis/mybatis--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.5.6</version></depende......
  • linux系统编程学习笔记
    IO当系统调用io与标准io都能完成相同功能时,优先使用标准io因为不同操作系统提供的系统调用不同,但标准io是之上的封装,不会随着系统的不同改变另外标准io可以合并系统调用,加速如标准io如fopen,在linux下依赖open,在windows下依赖openfile标准IO与系统IO区别一个吞吐量大(即先缓存......
  • 011 学习笔记--视图 + 存储过程
    视图:视图:是一种虚拟的表。视图中的数据在数据库中并不实际存在,行和列的数据来自自定义视图中查询使用的表,并且是在使用视图时动态生成的。创建视图:createorreplaceviewviewnameas select语句[with[cascaded|local|checkoption]]例如:createorREPLACEviewView_Ge......
  • k8s 学习笔记之搭建 nginx 服务测试搭建的环境
    服务部署接下来在kubernetes集群中部署一个nginx基础程序,测试集群是否正常工作。#部署nginx[root@master~]#kubectlcreatedeploymentnginx--image=nginx:1.14-alpine#暴露端口[root@master~]#kubectlexposedeploymentnginx--port=80--type=NodePort#......
  • k8s 学习笔记之集群网络插件安装
    我们在安装完集群后,通过kubectlgetnodes命令获取节点,可以看到所有节点都处于NotReady的状态,这是没有安装网络插件导致的。安装网络插件kubernetes支持多种网络插件,比如flannel、calico、canal等等,任选一种使用即可,本次选择flannel下面操作只需在master节点执行即可,插件......
  • Python Matplotlib绘图笔记(1)
    文章目录1pyplot.figure()语法参数测试figsizefacecoloredgecolorframeon2pyplot.subplot()说明设置所有子图的大标题分别设置每个子图的标题3pyplot.legend()作用设置图例位置设置图例边框设置图例边框颜色设置图例背景颜色设置图例标题4绘制三维图像利用关键字`projection......
  • Ray Tracer 笔记
    这里先简要整理一下RTinOneWeekend系列前两本书的原理,为了后面report做帮助。第一本书:基础部分Rayclass光线从一个地方发出,有一个方向。因此,这个类有两个成员:origin:Point3和direction:Vec3。......
  • k8s 学习笔记之 centos7 环境初始化
    Linux环境初始化——CentOS7.9确保Linux版本在7.5以上,方便安装k8s集群,且所有机器上需要配置环境1.查看操作系统版本[root@master~]#cat/etc/redhat-releaseCentOSLinuxrelease7.9.2009(Core)2.主机名解析这里是为了方便集群节点之间的直接调用,可以配......
  • 7.20日
    今天睡到了自然醒(估摸九点半),我简单洗漱之后就去往中国丝绸博物馆,朋友则前往钱学森旧居。早上杭州下着雨,原本步行的想法被迫改为打车。到了丝博馆东门,首先就是丝路馆,里面是关于丝绸的起源和演变还有丝绸之路的发展。整个丝博馆大大小小有近是个馆厅,我一一游览,其中最喜欢的是时装馆......
  • B站千峰网安笔记
    01、批处理操作简单的cmd指令:1、TXT文件可以更改后缀名来实现转换(.dat/.html)2、@echooff关闭回显指令(即不显示如何运行)3、>nul是屏蔽屏幕显示2>nul是屏蔽错误提示4、分块指令:15、跳转指令qoto302、服务器服务器系统版本介绍Windows服务器系统:win2000w......