拆一根管子有时毫无影响
一张管道网,0 号是水源、6 号是出口,cap[u][v] 是 u→v 这根管子每秒最多能过多少水。 把 4 → 3 那根管子整根拆掉,和原来的网各跑一次最大流,再数一数拆完还剩几根管子,三个数一起输出。 (本题用 g++ -std=c++
加粗哪根管子才真有用
一张管道网,0 号是水源、6 号是出口,cap[u][v] 是 u→v 这根管子每秒最多能过多少水。 给你一次加粗的机会。分别试试加粗最细的那根(1 → 4,从 2 到 4)和加粗割上的那根(3 → 6,从 3 到 5),连同原始值一起输出
什么问题能套二分图匹配
第 1 步:点表示会开这台机器 第 2 步:阿岚先挑:拿走甲 第 3 步:小满只会甲:没得挑了 第 4 步:让阿岚挪到乙,甲给小满 第 5 步:阿泰让出丙:四对全配上 甲 乙 丙 丁 阿岚 小满 阿泰 南风 · · · · · · 下面这些
先到先得为什么不够
按名单顺序一个个来,每人挑一台还空着的机器。这么配的毛病是【0】。
最多能同时开几台
五个人、四台机器。每个人只会开其中几台,一台机器同时只能一个人用,一个人也只能占一台。 运行下面这段程序: #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 步:「流量」:用最大流 先后 互相 配对 流量 拓扑 强连通 匹配 最大流 一堆任务,只知道两两之间的先后要求,