自己写:让前面的人挪个位

五个人、四台机器。每个人只会开其中几台,一台机器同时只能一个人用,一个人也只能占一台:补全 aug 那两步。关键在"或者"后面半句——占着这台机器的人,能不能自己再挪到别处去。 PEOPLE = ['阿岚'

开始练习 →

⚠️ 用最大流再算一遍匹配数

五个人、四台机器。每个人只会开其中几台,一台机器同时只能一个人用,一个人也只能占一台:把匹配改写成一张管道网:总源 S 到每个人容量 1,人到他会开的机器容量 1,机器到总汇 T 容量 1。两种算法各算一次,输出两个数对账。 PEOPLE

开始练习 →

🔴 只把两个人对调,贪心就"对"了

五个人、四台机器。每个人只会开其中几台,一台机器同时只能一个人用,一个人也只能占一台:还是那个先到先得,只把名单里阿泰和南风的位置对调一下,其它一个字不改。两次各配出几对? PEOPLE = ['阿岚', '小满&#

开始练习 →

「谁必须在谁前面」该用哪一个

一堆任务,只知道两两之间的先后要求,要排出一个能照着做的顺序。该用的是【0】。

开始练习 →

⚠️ 「互相到得了的抱成一团」该用哪一个

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

开始练习 →

四个问题,各该用哪一个

四个问题依次是:一人一台、互相可达、最多过多少水、排出先后。按这个顺序输出各自该用的办法: G = [(0, 1), (0, 2), (1, 3), (2, 3), (3, 4), (4, 5), (5, 3), (4, 6)] def

开始练习 →

⚠️ 拓扑排序一共做了多少次减法

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

开始练习 →

⚠️ 聪明办法和笨办法差多少

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

开始练习 →

点数翻一倍,代价翻几倍

点数从 7 涨到 14,边数也跟着差不多翻倍。算一算拓扑排序在两种规模下各做多少次减法。

开始练习 →

自己写:从一句人话里认出算法

把选型写成一个函数:从需求描述里找关键词,认出该用哪一类算法。认不出来就老实说再问一遍。

开始练习 →