互相到得了抱成团用哪个

一张有向图,要把「顺着箭头能互相走到」的点归成一组一组。该用的是【0】。

开始练习 →

四个问题各该用哪一个

四个问题依次是:一人一台、互相可达、最多过多少水、排出先后。按这个顺序输出各自该用的办法: #include <algorithm> #include <climits> #include <iostream&

开始练习 →

拓扑排序做了多少次减法

七个构建任务编号 0~6,(a, b) 表示 a 做完才能做 b。 数一数 kahn 里「入度减 1」这个动作在两张图上各做了多少次——左边是那张 DAG,右边是加了 5 → 3 的那张: #include <algorithm>

开始练习 →

聪明办法和笨办法差多少

七个构建任务编号 0~6,(a, b) 表示 a 做完才能做 b。 左边是拓扑排序数出来的减法次数。右边数一数笨办法要做多少次检查:把七个任务的全部排列都试一遍,每个排列逐条验七条依赖。 (本题用 g++ -std=c++17 -O0 编译

开始练习 →

点数翻倍代价翻几倍

点数从 7 涨到 14,边数也跟着差不多翻倍。算一算拓扑排序在两种规模下各做多少次减法。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

从一句人话认出算法

把选型写成一个函数:从需求描述里找关键词,认出该用哪一类算法。认不出来就老实说 再问一遍。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

选之前先看图有没有环

七个构建任务编号 0~6,(a, b) 表示 a 做完才能做 b。 选算法之前还有一步:先看这张图能不能排全。能就直接排,不能就得先缩点。两张图各判一次。 (本题用 g++ -std=c++17 -O0 编译。)

开始练习 →

交付图算法先验什么

第 1 步:五条验收,一条一条过 第 2 步:第 1 条:数对上了 第 3 步:第 2 条:数对上了 第 4 步:第 3 条:数对上了 第 5 步:第 4 条:数对上了 第 6 步:第 5 条:数对上了 第 7 步:全过:可以交付 判环 分

开始练习 →

答案不唯一时怎么验收

拓扑序不唯一、匹配方案不唯一、最大流的走法也不唯一。验收这类结果,靠的是【0】。

开始练习 →

同一个函数有环时骗你

七个构建任务编号 0~6,(a, b) 表示 a 做完才能做 b。 把分层函数在两张图上各跑一次:左边是那张 DAG,右边是加了 5 → 3 的那张。 运行下面这段程序: #include <algorithm> #includ

开始练习 →