最多能同时开几台
五个人、四台机器。每个人只会开其中几台,一台机器同时只能一个人用,一个人也只能占一台。 运行下面这段程序: #include <algorithm> #include <climits> #include <i
先到先得能配上几对
五个人、四台机器。每个人只会开其中几台,一台机器同时只能一个人用,一个人也只能占一台。 这次按名单顺序来,每人挑第一台还空着的机器: #include <algorithm> #include <climits> #
自己写:让前面的人挪个位
五个人、四台机器。每个人只会开其中几台,一台机器同时只能一个人用,一个人也只能占一台。 补全 aug 那两步。关键在「或者」后面半句——占着这台机器的人,能不能自己再挪到别处去。 (本题用 g++ -std=c++17 -O0 编译。)
用最大流再算一遍匹配数
五个人、四台机器。每个人只会开其中几台,一台机器同时只能一个人用,一个人也只能占一台。 把匹配改写成一张管道网:总源 S 到每个人容量 1,人到他会开的机器容量 1,机器到总汇 T 容量 1。两种算法各算一次,输出两个数对账。 (本题用 g
只对调两人贪心就对了
五个人、四台机器。每个人只会开其中几台,一台机器同时只能一个人用,一个人也只能占一台。 还是那个先到先得,只把名单里阿泰和南风的位置对调一下,其它一个字不改。两次各配出几对? (本题用 g++ -std=c++17 -O0 编译。)
谁必须在谁前面用哪个
第 1 步:题目里的关键词 第 2 步:「先后」:用拓扑 第 3 步:「互相」:用强连通 第 4 步:「配对」:用匹配 第 5 步:「流量」:用最大流 先后 互相 配对 流量 拓扑 强连通 匹配 最大流 一堆任务,只知道两两之间的先后要求,
互相到得了抱成团用哪个
一张有向图,要把「顺着箭头能互相走到」的点归成一组一组。该用的是【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 编译