- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我需要帮助来理解如何解决以下问题:
Professor Adam has two children who, unfortunately, dislike each other. The problem is so severe that not only do they refuse to walk to school together, but in fact each one refuses to walk on any block that the other child has stepped on that day. The children have no problem with their paths crossing at a corner. Fortunately both the professor's house and the school are on corners, but beyond that the professor is not sure if it is going to be possible to send both of the children to the same school. The professor has a map of the town. Show how to formulate the problem of determining whether both the children can go to the same school as a maximum-flow problem.
我唯一能想到的就是有一个四角图。左上角的顶点代表源(亚当的房子),右下角代表汇(学校)。右上角的角 x
表示邻域中的角,而 y
表示邻域的左下角。因此,我们的路径从 S -> C1
、S -> C2
、C1 -> t
和 C2 ->吨
。每条路径的权重为 1,因为它只能容纳一个 child 。该图的最大流量为 2,证明他们可以就读同一所学校。
我遇到的问题是我不确定我找到的这个解决方案是否能解决问题。最让我难过的部分是,我不确定这意味着什么:但实际上每个人都拒绝走另一个 child 当天踩过的任何障碍物。这句话怎么能如果他们都住在同一街区的同一所房子里,这有意义吗?
最佳答案
更新:原来,我误读了问题。该问题要求找到“边不相交”的路径,而不是顶点不相交的路径。在这种情况下,解决方案只是将每个角表示为一个顶点,将每个 block 表示为容量为 1 的边,并运行常规最大流(正如下面 Curious 所正确建议的那样)。
我相信那个 OP 有同样的困惑基于
but in fact each one refuses to walk on any block that the other child has stepped on that day. How can this statement make sense if both live in the same house on the same block?
请注意, children 住在同一个角落的同一所房子里,而不是同一个街区。
我留下剩下的答案,以防有一天有人真的在寻找顶点不相交的问题:
如果我对问题的理解正确,它要求的是找到从源到汇的两条顶点不相交的路径。仅按原样使用图,并为每条边分配 1
的容量是不够的。考虑以下示例:
s -> C1, C1 -> C3, C3 -> C4, C4 -> t
s -> C2, C2 -> C3, C3 -> C5, C5 -> t
如果您为这些边中的每一个分配 1
的容量,并运行任何最大流算法,它会发现最大流为 2,但是没有两个顶点不相交的路径(两条路径都会通过顶点 C3
)。
要解决这个问题,您需要调整图表。对于除 s
和 t
之外的每个顶点,将其一分为二。假设顶点 u
被拆分为 u'
和 u''
。使所有进入 u
的边都进入 u'
,所有从 u
开始的边都从 u ''
(那些边的容量无关紧要,只要是正数即可,所以可以设置为1
)。最后,添加一条从 u'
到 u''
的边,容量为 1
,并在此图上运行最大流。由于我们在拆分节点之间添加的那些边,每个顶点最多使用一次,因为对于要使用的顶点,我们需要输入 u'
,从 u'
到 u''
并从那里退出,只有一个单位的流量可以从 u'
到 u''
。
关于algorithm - Professor Adam's Kids(确定最大流量),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30493875/
这个问题在这里已经有了答案: Why don't Java's +=, -=, *=, /= compound assignment operators require casting? (11 个
我搜索了很多,但没有一个链接能帮助我解决这个问题。我得到了 ORA-21500: internal error code, arguments: [%s], [%s], [%s], [%s], [%s
我正在做 RegexOne 正则表达式教程,它有一个 question关于编写正则表达式以删除不必要的空格。 教程中提供的解决方案是 We can just skip all the starting
([\s\S]+|\s?) 中 |\s? 的目的或作用是什么?如果没有它,表达式会不会与 ([\s\S]+) 相同? 最佳答案 这不是完全相同的。 ([\s\S]+|\s?) 会匹配空字符串,而 ([
这个正则表达式有一组还是两组? 我正在尝试使用第二组访问 bookTitle 但出现错误: Pattern pattern = Pattern.compile("^\\s*(.*?)\\s+-\\s+
在 C 中给定一个字符串指针 s,下面的迭代会做什么?即它以什么方式遍历字符串? for (++s ; *s; ++s); 最佳答案 for (++s ; *s;++s) 表示 将指针 s 递增到字符
我正在用一个 node.js 应用程序解析一个大列表并有这段代码 sizeCode = dbfr.CN_DESC.split('\s+-\s*|\s*-\s+') 这似乎不起作用,因为它返回了 [ '
我正在编写一个简单的字符串连接程序。 该程序按照我发布的方式运行。但是,我首先使用以下代码编写它来查找字符串的结尾: while (*s++) ; 但是,这个方法并没有奏效。我传递给它的字符串
这个问题已经有答案了: What does (?和aramchand来自Mohandas Karamchand G 因此,在使用这些匹配来分割字符串后,您最终会得到 {"M", "K", "G"} 注
我正在尝试转换 Map到 List使用 lambda。 本质上,我想将键和值与 '=' 连接起来之间。这看起来微不足道,但我找不到如何去做。 例如 Map map = new HashMap<>();
我正在经历 K & R,并且在递增指针时遇到困难。练习 5.3(第 107 页)要求您使用指针编写一个 strcat 函数。 在伪代码中,该函数执行以下操作: 将 2 个字符串作为输入。 找到字符串
在下面的代码中,pS 和 s.pS 在最后一行是否保证相等?也就是说,在语句S s = S();中,是否可以确定不会构造一个临时的S? #include using namespace std; s
演示示例代码: public void ReverseString(char[] s) { for(int i = 0, j = s.Length-1; i < j; i++, j--){
我一直在寻找类似于 .NET examples 中的示例的 PowerShell 脚本.取一个 New-TimeSpan 并显示为 1 天 2 小时 3 分钟 4 秒。排除其零的地方,在需要的地方添加
def func(s): s = s + " is corrected" return s string_list = ["She", "He"] for s in string_li
我是 python 的新手。当我在互联网上搜索 lambda 时。我在 lambda_functions 中找到了这个声明. processFunc = collapse and (lambda s:
我最近开始学习正则表达式,并试图为上面的问题写一个正则表达式。如果限制只放在一个字母上(例如不超过 2 个“b”),这并不困难。 那么答案就是:a* c*(b|ε)a* c*(b|ε)a* c* 但是
当我运行 npm install 时出现以下错误,但我无法修复它。 我试过:npm install -g windows-build-tools 也没有修复这个错误 ERR! configure
有很多有趣的haskell网上可以找到片段。 This post可以在 this (awesome) Stack Overflow question 下找到. The author写道: discou
我知道以下三行代码旨在将字符串提取到$ value中并将其存储在$ header中。但是我不知道$value =~ s/^\s+//;和$value =~ s/\s+$//;之间有什么区别。 $val
我是一名优秀的程序员,十分优秀!