8月清北学堂培训 Day 7
当天走得太兴奋了,忘记保存就关电脑了o(╥﹏╥)o,现在补上( p′︵‵。)
今天是杨思祺老师的讲授~
练习题

首先求出最短路;
如果选择的边不是最短路上的边,那么毫无影响;
对于最短路径上的边,我们需要枚举路径上每条边,加倍再跑 Dijkstra。

我们可以考虑在建图方面进行改造:
假设我们建完图之后是长这个样子的:

我们先考虑 k=1 的情况,也就是我们可以使一条边的权值变为0。
我们可以将这个图在上层拷贝一份,将每个结点从上层的能到达的结点连一条有向边,这些边的权值为0,这样就实现了删除一条边的效果:

那么怎么设置上层点的编号呢?
我们可以像棋盘一样设置:

假设我们有个 n × m 的棋盘,那么这个棋盘上第 k 行第 j 列的数就是:(k-1)* m + j;
那么我们也可以根据这个规律来给上层的图的结点编号:(2-1)* n + j;
那么最终的答案就是:1 -> 6 的最短路,一遍Dijkstra 即可;
分析完上面 k=1 的情况后,我们就可以得出删除 k 条边的做法了:
我们拷贝 k 层图,按照上面的思路连权值为0的有向边,那么最后的答案就是:1 -> (k-1)* n 点的最短路;
但是考虑到可能用不了 k 次更新(比如本来就不够 k 条边),所以我们再从分层图的每一层的点向下一层的对应点连一条边,表示白白浪费一次更新机会~
我们这样建边实现边的跳跃。
分层图的实现:通过映射,将二维图转化为一维图;

n2 建边,但是发现会有许多边是冗余的。
我们先按照 x 从小到大排好序;
假如平面内有三个点(x1,y1),(x2,y2),(x3,y3);
第一个点到第三个点的直接路径为:min(| x1- x3 |,| y1- y3 |)= x3 - x1;
我们也可以考虑从中转点第二个点来走到第三个点:min(| x1- x2 |,| y1- y2 |)+ min(| x2- x3 |,| y2- y3 |)= x2 - x1 + x3 - x2 = x3 - x1;

如果我们按照 x 排好序后,那么点 1 到点 3 的 x 距离完全可以用点 1 到点 2 + 点 2 到点 3 的 x 距离来表示;
也就是说,我们按照 x 排序后只需要在相邻两个点连一条边就好了;
对于 y 的话是一样的 。

我们尽量让最小边最大,但是这样操作会使最大边的选择范围变小,可能会导致最大边变大;
我们从大到小枚举最小边,用更大的边做 Kruskal,当 S 和 T 连通立即 break。
LCT,从大到小加边维护最小生成树。

1. 二分做法:
我们二分枚举 mid,小于 mid 的边连部落内部,大于等于 mid 的边是部落间的距离,看看是否连成了至少 k 个连通块即可 。
2. 最小生成树:
我们按照 Kruskal 的做法,当我们选中了 n-k 条边的时候,也就意味着此时有 k 个联通块,那么我们只需要再找一条不是部落间的边就是答案了,也就是选中的第 n-k+1 条边 。

我们需要求出每个杯子的奇偶性,才能知道答案,也就是要求每个 [ 0 , i ] 的奇偶性,就像前缀和一样,干脆直接用 S [ i ] 来表示区间 [ 0 , i ] 的奇偶性;
假如我们知道了区间 [ l , r ] 的奇偶性,那么我们就是知道了 S [ r ] - S [ l-1 ] 的奇偶性了;
奇偶性的转化:假如我们知道了 [ l , k ] 的奇偶性了,又知道了 [ k+1 , r ] 的奇偶性,那么我们也就知道了 [ l , r ] 的奇偶性!
我们发现这一点和树上唯一路径很像:知道了 x -> y 的路径,又知道了 y -> z 的路径,也就知道了 x -> z 的路径 。
那么通过这一条很重要的性质,我们求每个前缀和的话,其实就是求 0 都能走到每个点的最小花费和,再具体一点就是求最小代价使得整个图联通,直接最小生成树板子!

在任意一个非加油站点,不论目的地是哪个加油站,先前往最近 的加油站再前往目的地是最优策略。
加油站之间存在一种边,可以视为一条由非加油站点串起来的路径。我们希望找到加油站之间的最小生成树。
多源最短路,以所有加油站为起点,记录下每个点到最近加油站的距离,以及是哪个加油站。
建立用于做最小生成树之间的边:如果一条边 < u, v > 满足 u 和 v 的最近加油站不同,则 disu + disv + wu,v 构成一条 fromu 和 fromv 的边。 MST 算法求出最小生成树,倍增或树链剖分维护链上最小值。

记四个关键点为 E1,E2,W1,W2。
一条边 < u, v, w > 在从 S 到 T 的最短路上,当且仅当 DS,u + w + Dv,T Du,v。 找出所有同时在 E1 到 E2 和 W1 到 W2 最短路上的有向边,一 定无环形成 DAG。 拓扑排序求 DAG 最长路。 注意:对于同时在 E1 到 E2 和 W2 到 W1 最短路上的有向边再做一次。

设 a [1] 是最小的,在模 a [1] 意义下,0 到 a [1] − 1 每个位置都 有其最小可被表示值。
而如果 k 是可被表示的,那么 k + a [1], k + 2 × a [1], . . . 都可被表示。
故问题转化为求解每个位置最小可被表示数字。 建立 a[1] 个点,对于每个 a [ j ],j , 1,我们理解为可以花费 a [ j ] 代价从 x 点转移到 ( x + a [ j ] ) mod a [1] 点。建边之后从0 号点出发做单源最短路即可。
8月清北学堂培训 Day 7的更多相关文章
- 7月清北学堂培训 Day 3
今天是丁明朔老师的讲授~ 数据结构 绪论 下面是天天见的: 栈,队列: 堆: 并查集: 树状数组: 线段树: 平衡树: 下面是不常见的: 主席树: 树链剖分: 树套树: 下面是清北学堂课程表里的: S ...
- 8月清北学堂培训 Day6
今天是杨思祺老师的讲授~ 图论 双连通分量 在无向图中,如果无论删去哪条边都不能使得 u 和 v 不联通, 则称 u 和 v 边双连通: 在无向图中,如果无论删去哪个点(非 u 和 v)都不能使得 u ...
- 10月清北学堂培训 Day 7
今天是黄致焕老师的讲授~ 历年真题选讲 NOIP 2012 开车旅行 小 A 和小 B 决定外出旅行,他们将想去的城市从 1 到 n 编号,且编号较小的城市在编号较大的城市的西边.记城市 i 的海拔高 ...
- 10月清北学堂培训 Day 6
今天是黄致焕老师的讲授~ T1 自信 AC 莫名 80 pts???我还是太菜了!! 对于每种颜色求出该颜色的四个边界,之后枚举边界构成的矩阵中每个元素,如果不等于该颜色就标记那种颜色不能最先使用. ...
- 10月清北学堂培训 Day 5
今天是廖俊豪老师的讲授~ T1 第一次想出正解 30 pts: k <= 10,枚举如何把数放到矩阵中,O ( k ! ): 100 pts: 对于矩阵的每一列,我们二分最小差异值,然后贪心去判 ...
- 10月清北学堂培训 Day 4
今天是钟皓曦老师的讲授~ 今天的题比昨天的难好多,呜~ T1 我们需要找到一个能量传递最多的异构体就好了: 整体答案由花时间最多的异构体决定: 现在的问题就是这么确定一个异构体在花费时间最优的情况下所 ...
- 10月清北学堂培训 Day 3
今天是钟皓曦老师的讲授~ zhx:题很简单,就是恶心一些qwq~ T1 别人只删去一个字符都能AC,我双哈希+并查集只有40?我太菜了啊qwq 考虑到越短的字符串越难压缩,越长的字符串越好压缩,所以我 ...
- 10月清北学堂培训 Day 2
今天是杨溢鑫老师的讲授~ T1 物理题,不多说(其实是我物理不好qwq),注意考虑所有的情况,再就是公式要推对! #include<bits/stdc++.h> using namespa ...
- 10月清北学堂培训 Day 1
今天是杨溢鑫老师的讲授~ T1 1 题意: n * m 的地图,有 4 种不同的地形(包括空地),6 种不同的指令,求从起点及初始的状态开始根据指令行动的结果. 2 思路:(虽然分了数据范围但是实际上 ...
随机推荐
- NavigatorOnLine.onLine——判断设备是否可以上网
概述:返回浏览器的联网状态.正常联网(在线)返回true,不正常联网(离线)返回false.一旦浏览器的联网状态发生改变,该属性值也会随之变化. 1.语法 let online = window.na ...
- (一)JMS简介
一.简介 JMS即Java消息服务(Java Message Service)应用程序接口,是一个Java平台中关于面向消息中间件(MOM)的API,用于在两个应用程序之间,或分布式系统中发送消息,进 ...
- Nginx实现同一端口HTTP跳转HTTPS
小目标:在只监听一个端口的情况下,将http访问跳转为https. 一般情况下http协议使用80端口,https协议443端口.要实现http强制转https是非常简单的事,随便都可以找到很多方案. ...
- vue + element-ui 国际化实现
1. 安装组件和插件 cnpm i element-ui -S // 安装elementcnpm i vue-i18n -S //安装i18n 2.将国际化资源放在assets目录下 3.在src下新 ...
- [Vuex系列] - 细说state的几种用法
state 存放的是一个对象,存放了全部的应用层级的状态,主要是存放我们日常使用的组件之间传递的变量. 我们今天重点讲解下state的几种用法,至于如何从头开始创建Vuex项目,请看我写的第一个文章. ...
- kafka学习链接收藏
1.kafka官方文档 Apache Kafka : broker.producer.consumer等参数配置直接看目录 2.系统学习 kafka中文教程 - OrcHome <Apache ...
- 2.Vue调试工具vue-devtools的安装步骤和使用
1.安装步骤: 打开谷歌浏览器设置 -->扩展程序 -->勾选开发者模式 --->加载已解压的扩展程序 --->选择“chrome扩展”文件夹即可:
- 6.Hbase 原理
2 HBase体系结构 2.1 设计思路 HBase是一个分布式的数据库,使用Zookeeper管理集群,使用HDFS作为底层存储.在架构层面上由HMaster(Zookeeper选举产生的Leade ...
- xargs 使用详解
参考转载:https://www.cnblogs.com/f-ck-need-u/p/5925923.html#auto_id_12 xargs 作用:将管道传输过来的stdin进行处理(分割.分批) ...
- 网页报警提示 This page includes a password or credit card input in a non-secure context. A warning has been added to the URL bar. For more information, see https://goo.gl/zmWq3m.
This page includes a password or credit card input in a non-secure context. A warning has been added ...