图论

最短路:dijkstra   spfa   floyd

最小生成树:kruskal

连通性:bfs/dfs    tarjan(强连通分量)

其它:拓扑排序    LCA

齿轮:

图的dfs树只有返祖边没有横向边

树边确定了基础的转动比,非树边判定转动比是否可行

Lca

Dijkstra

Pair第一个存的是源点到这个点当前的最短路,第二个存的是这个点的编号

预处理 把1压进去,1到其他的dis都设置为正无穷

不断地从堆顶弹出元素,直到弹空

对其中的元素进行处理

注意如果已经处理过就不用处理了

Spfa

先建一个循环队列或者stl队列,如果不为空就继续运行

每次从队首取出一个元素,标记这个元素不在队列里

枚举所有的出边,如果满足不等式就更新

循环队列:重复利用空间,方便查找bug

//最长路

Floyd

枚举所有中间节点进行扩展

先枚举中间节点

Kruscal

最小生成树的最大边权一定最小

先把所有边权拿出来排序,每次选取边权最小的一条边,把两个端点放在同一个连通块当中

如果两个端点已经在一个连通块中就跳过

并查集了解一下

注意是无向图

拓扑排序

每次删去一个没有入度的节点

考法:拓扑序上dp    判环

Telephone lines

二分答案

边权小于mid相当于会被花费覆盖掉,边权大于mid必须让他免费

考虑从点1到n可不可以有小于k条边权大于mid的边

让大于mid边权为1,小于等于mid边权为0

如果最短路的dis<=k,就说明这个解可行

Revamping trails

分层建图,每一层表示升级了几条路

把有边的两点上下两层分别连一条边权为0的边,点m向上面一层连一条边权为0的点

相当于搞一个映射把二维映射成一维

第k层第i个点(k,i)->(k-1)*n+i

只需要搞一个函数d(k,i)

Wormholes

Spfa判负环

看入队次数

Meeting

这道题难点在建图

我们多建一些点,表示每一个集合,然后把这一个街区内的点用边权为val[i]的有向边指向这个点,再用边权为0的有向边指回来,然后跑dijkstra就好了

寻宝游戏

先考虑离线算法

按照树的dfs序走

按dfs序排序,求出两两之间的lca,求出两个点之间的最短路

在线:比如在i,j中插入点k(字典序),就可以在原来的基础上减去i,j的距离(用lca求)加上i,k的距离和k,j的距离就行了

我们只需要知道插入的数k的前驱和后继,直接用set

复杂度 o(n+mlogn)

飞飞侠

让它飞起来(雾

考虑在这个点上方b[i][j]的点连边,往四周飘,每一次低一格(因为曼哈顿距离)。在每一个点往直下方连边,表示在这个点降落

三维分层图跑三遍最短路就行了

qbzt day4 上午的更多相关文章

  1. Day4上午

    expect100+50+50, In fact 100+10+0. 代码能力还有待提高,部分分应该能拿的.结果...力不从心啊. T1 贪心做的不知对不对. 看来思路是对的,不知道能不能对. 暴力做 ...

  2. QBXT T15565 Day4上午道路分组

    有向并查集维护连通性 优化: vis数组表示能被节点1到达的点 显然,已经分在一个联通块中的点就没必要在用该点扩展了. #include<cstdio> #include<algor ...

  3. Day4上午解题报告

    预计分数:50 +0+0=50 实际分数:50+0+10=60 毒瘤出题人,T3不给暴力分 (*  ̄︿ ̄) T1 https://www.luogu.org/problem/show?pid=T155 ...

  4. qbzt day7上午

    由于优盘咕咕咕了,所以这篇就咕咕咕了 以后还会补上的 qwq

  5. qbzt day6 上午

    还是合并石子,但是这次可以任意两个合并,并且求最大异或和 f[s]表示把s所对应的的石子合并为一堆的最小代价 最后求f[2^n-1] 怎么转移? 最后一次也是把两堆合并成一堆,但是会有很多情况,可以枚 ...

  6. qbzt day5 上午

    动态规划 递推  递归   记忆化搜索 斐波那契数列 1.用其他已经计算好的结果计算自己的结果(递推) 2.用自己的值计算别人的值(考虑对之后的项做出的贡献) cin >> n; f[]= ...

  7. qbzt day4 下午

    有向图的强连通分量 强联通:两个点之间可以互相到达 如果某个图任意两个点都是强联通的,那么称这个图强联通 如果一个图的子图是强联通的,那么称这个图是强联通子图 一个图的极大强联通子图被称作强连通分量 ...

  8. qbzt day3 上午

    内容提要 堆 lca(最近公共祖先) st表 hash 并查集 树状数组 线段树 数据结构 1.堆 Priority_queue 他滋兹:插入删除查询最大值(最小值) 分为大根堆小根堆 2.LCA 首 ...

  9. qbzt day2 上午

    内容提要 贪心 分治 分块 搜索 接着昨天的讲 过河问题 考虑AB是最快的人,CD是最慢的人,要把CD两个人送过河,只有两种方案,牵扯到四个人,并且n个规模的原问题化成了n-2个规模的子问题 那么最后 ...

随机推荐

  1. 用nopcomerce3.8版本的同行注意了,前2天发布3.8正式版后,作者收到一些BuG,作者修复后重新提供了一个源代码包下载.

    用nopcomerce3.8版本的同行注意了,前2天发布3.8正式版后,作者收到一些BuG,作者修复后重新提供了一个源代码包下载地址,不是github上的那个链接.去作者官网论坛我那个链接地址,或关注 ...

  2. 3-6如何在一个for语句中迭代多个可迭代对象

    1.并行迭代 迭代元组可以进行拆包迭代. >>> zip([1,2,3,4],('a','b','c','d')) [(1, 'a'), (2, 'b'), (3, 'c'), (4 ...

  3. 1、Java调用C语言(本地法)

    这是一个比较麻烦的方法..   一.首先,你要先安装一个VC,我的装在了D:\software\C++\Microsoft Visual Studio   二.我的jdk安装目录是D:\Program ...

  4. ubuntu系统更新命令

    一.图形界面更新升级 1.点击”系统设置“,打开“软件和更新”,切到“更新”栏目进行更新设置. 2.可以通过软件更新器进行更新升级自己想要更新的 二.命令方式更新升级 1.先解锁 ps -e|grep ...

  5. thinkphp5发送邮件(实例代码 非常适合新手)

    第一步:在(https://pan.baidu.com/s/1Fq6lONHlft5D6jvOnNwtoA)下载 phpmailer.rar 解压 然后把文件放入 vendor目录下 第二步:在 ap ...

  6. C# 同比缩放图片

    /** * 无损缩放图片 * bitmap 需要缩放的图片 * w 需要缩放的宽度 * h 需要缩放的高度 * */ public static System.Drawing.Bitmap TBSca ...

  7. React -- 3/100 】组件通讯

    通讯 | props | prop-types 组件通讯 Props: 组件无论是使用函数声明还是通过 class 声明,都决不能修改自身的 props /* class */ .parent-box ...

  8. 02python程序设计基础——字符串

    字符串方法 format 1.替换字段名 在最简单的情况下,只需向 format 提供要设置其格式的未命名参数,并在格式字符串中使用未命名字段.此时,将按顺序将字段和参数配对.你还可给参数指定名称,这 ...

  9. Eclipse开发工具的编码问题

    乱码:文件有一个编码,打开文件的工具(Eclipse或者浏览器)有一个编码,当两个编码不同就会出现编码异常或乱码. 参考: Eclipse修改编码格式 背景:在Eclipse的开发使用中,我们经常使用 ...

  10. Linux中查看某 个软件的安装路径

    本人qq群也有许多的技术文档,希望可以为你提供一些帮助(非技术的勿加). QQ群:   281442983 (点击链接加入群:http://jq.qq.com/?_wv=1027&k=29Lo ...