2025/3/4

内容:有向无环图(DAG)

优点:DAG有很多良好性质

  1. 拓扑排序

用处:可以根据拓扑序进行dp

这次计算所用的所有边的权值都是有计算过的

一张DAG图肯定有拓扑序(bfs序,dfs序都是拓扑序)

内向树,外向树

因为所有边都是所有从前面指向后面,所以如果一张图可以进行拓扑排序

那么这张图一定是DAG

如果有一张DAG,那么可以对其进行拓扑算法

拓扑算法:求拓扑序

对于一个点u,我们可以求出他的入度d

求入度的办法:枚举每条边u->v,d[v]++;

对于所有的d,必然至少有一个d[n]=0

那么这个(些)点n就可以放在拓扑序的前面.

方法一:

比较简单且愚蠢的方法O(nm)n:点数,m:边数

(就是我用的方法)

一次次遍历整张图

找到入度为0的点,然后把这个点记录下来,并且删掉

一遍遍就能所有点都记录下来

方法二:

首先遍历所有点,找到入度0的点,把它删掉,假设这些点构成一个集合(队列)S

然后从S中找一个点,放在拓扑序的开头

再把这个点“删掉”

其实没必要完全删干净,只需要把这个点所有指向的点入度都--就行了

如果在所有d[v]--的点中,--到0了,那么就把v加到S中

那么这个算法的复杂度:

算入度:O(m)

首次遍历:O(n)

删边:每条边只会被删一边:O(m)

最后时间复杂度是O(m+n)

模板题:B3644

青岛oj集训1的更多相关文章

  1. 在Ubuntu虚拟机上搭建青岛OJ

    源码地址为:https://github.com/QingdaoU/OnlineJudge 可参考的文档为:https://github.com/QingdaoU/OnlineJudgeDeploy/ ...

  2. PostgreSQL安装和使用

    青岛OJ系统用的关系型数据库是PostgreSQL,为此对PostgreSQL大致了解下. 今天的主要话题围绕下面两个方面: PostgreSQL安装 PostgreSQL使用 一.PostgreSQ ...

  3. OnlineJudgeServer运行

    我在这如下这两篇文章都说过青岛OJ相关的 OnlineJudgeFE之前端二次开发 青岛大学开源OJ平台搭建 今天我还是要来讲讲关于这个青岛OJ. 青岛OJ采用的是完全的前后端分离架构. Online ...

  4. ZR10.1青岛集训三地联考

    ZR10.1青岛集训三地联考 谢谢dijk和smy A 题目大意: 已知斐波那契数列\(f\) 设 \[ F_i = \sum_{i = 0}^nf_if_{n - i} \] 求 \[ \sum_{ ...

  5. C#利用POST实现杭电oj的AC自动机器人,AC率高达50%~~

    暑假集训虽然很快乐,偶尔也会比较枯燥,,这个时候就需要自娱自乐... 然后看hdu的排行榜发现,除了一些是虚拟测评机的账号以外,有几个都是AC自动机器人 然后发现有一位作者是用网页填表然后按钮模拟,, ...

  6. JS省队集训记

    不知不觉省队集训已经结束,离noi也越来越近了呢 论考前实战训练的重要性,让我随便总结一下这几天的考试 Day 1 T1 唉,感觉跟xj测试很像啊?meet in middle,不过这种题不多测是什么 ...

  7. 用python爬取杭电oj的数据

    暑假集训主要是在杭电oj上面刷题,白天与算法作斗争,晚上望干点自己喜欢的事情! 首先,确定要爬取哪些数据: 如上图所示,题目ID,名称,accepted,submissions,都很有用. 查看源代码 ...

  8. 8.4 正睿暑期集训营 Day1

    目录 2018.8.4 正睿暑期集训营 Day1 A 数对子 B 逆序对 C 盖房子 考试代码 A B C 2018.8.4 正睿暑期集训营 Day1 时间:4.5h(实际) 期望得分:30+50+3 ...

  9. 记:青岛理工ACM交流赛筹备工作总结篇

    这几天筹备青岛理工ACM交流赛的过程中遇到了不少问题也涨了不少经验.对非常多事也有了和曾经不一样的看法, ​一直在想事后把这几天的流水帐记一遍,一直没空直到今天考完C++才坐下来開始动笔.将这几天的忙 ...

  10. 『ACM C++』HDU杭电OJ | 1415 - Jugs (灌水定理引申)

    今天总算开学了,当了班长就是麻烦,明明自己没买书却要带着一波人去领书,那能怎么办呢,只能说我善人心肠哈哈哈,不过我脑子里突然浮起一个念头,大二还要不要继续当这个班委呢,既然已经体验过就可以适当放下了吧 ...

随机推荐

  1. Nginx基础使用

    Nginx Nginx是一个WEB服务 [1].安装nginx 1.官网安装 2.使用默认的仓库安装,版本较低 3.编译方式安装,需要其他功能模块的时候 自定义安装 # 基于官网仓库的安装方式,版本较 ...

  2. 【C#】【平时作业】习题-11-ADO.NET

    目录 选择题 简述并举例说明 什么是ADO.NET? 什么是连接字符串? connection对象的作用? commmand对象的作用? dataAdapter对象的作用? DataReader对象的 ...

  3. Qt开发经验小技巧276-280

    对MDI窗体区域设置背景颜色透明,会发现 QMdiArea{background:transparent;} 无效,哪怕是指定颜色 QMdiArea{background:#ff0000;} 或者 Q ...

  4. Qt编写地图综合应用56-实时动态轨迹

    一.前言 实时动态轨迹经历过很多个版本的迭代,此功能最初是一个客户定制的,主要是需要在地图上动态显示GPS的运动轨迹,有个应用场景就是一个带有监控的车子,实时在运动中,后台可以接收到经纬度信息,需要绘 ...

  5. 开源即时通讯IM框架 MobileIMSDK v6.5 发布

    一.更新内容简介 本次更新为次要版本更新,进行了bug修复和优化升级(更新历史详见:码云 Release Notes.Github Release Notes). MobileIMSDK 可能是市面上 ...

  6. 跟着源码学IM(十二):基于Netty打造一款高性能的IM即时通讯程序

    本文由竹子爱熊猫分享,原题"(十一)Netty实战篇:基于Netty框架打造一款高性能的IM即时通讯程序",本文有修订和改动. 1.引言 关于Netty网络框架的内容,前面已经讲了 ...

  7. Python生成成绩报告单:从理论到实践

    在教育信息化日益普及的今天,自动化生成和处理学生成绩报告单已成为学校和教育机构的一项重要任务.Python作为一种功能强大且易于学习的编程语言,非常适合用于这种数据处理和报告生成任务.本文将详细介绍如 ...

  8. 使用 SOUI 开发高 DPI 桌面应用程序[转载]

    原文:使用 SOUI 开发高 DPI 桌面应用程序_吹泡泡的小猫的博客-CSDN博客 补充说明:soui3以后版本对dpi的支持更完善了,用起来也更简单了. 1 应用程序感知 DPI 变化 在 Win ...

  9. [记录点滴]在Ionic和Android中上传Blob图片

    [记录点滴]在Ionic和Android中上传Blob图片 目录 [记录点滴]在Ionic和Android中上传Blob图片 0x00 摘要 0x01 Blob 0x02 项目简述 0x02 Ioni ...

  10. Luogu P10997 Partition 题解 [ 蓝 ] [ 分割线 dp ]

    Partition:一道 dp 神题,用到了以轮廓线的轨迹来做 dp 的技巧,和敲砖块这题的状态设计有点相似. 观察 首先观察样例,发现整张图可以看作是被两条线分隔开的.同时每个颜色的四个方向上又存在 ...