首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

关于divide and couquer分治法的一道题和关于max flow的一道题解决思路

2012-03-26 
关于divide and couquer分治法的一道题和关于max flow的一道题1. Divide and Conquer两个向量x(x1,x2)和y(

关于divide and couquer分治法的一道题和关于max flow的一道题
1. Divide and Conquer
两个向量x(x1,x2)和y(y1,y2),当x1<y1,x2<y2时可以定义x<y。现有两个向量的集合A={a1,a2,a3,...an},B={b1,b2,b3,...bn}。要求用O(nlogn)的时间求出两个向量中所有x<y的数量。
比如说A={(1,1),(2,2)} B={(0,3),(3,3)}。在这两个集合中,x<y的数量就是2,x1<y2,x2<y2。



2. Max Flow
1)G是一个每条边的容量(capacity)都是整数的一个net flow.
(a)证明对于G中的每条边e,以下两个描述是相同的
  1.存在一个包含e的最小割。
  2.在所有最大流中,e都是饱和的。f(e) = Ce
2)证明G中存在一个最大流f,能使得带正数的流的边集合是不循环的(不知道怎么翻,原文是Prove that there exists a maximum flow f in G, such that the set of edges carrying positive flow is acyclic.)也就是说,f拥有如下特征:在G中所有由e1,e2,e3...ek组成的directed cycle中,f(e1),f(e2),...f(ek)这k个数中至少有一个等于0.


我实在想不出好的解法,,求助了。。谢谢


[解决办法]

探讨

其实是适用的,x对于y的逆序 = (x+y)的逆序 - x的逆序 - y的逆序 (所以还是n*log(n)的)
当然还有简化的方法,那就需要在实现中解决了。

(开始看题不认真,以为只有一个集合,不过2个集合的情况改一下也适用)

引用:

1楼的方法似乎不适用于本题吧?
因为求逆序数是对集合中的所有数而言,如果按1楼的方法,就把向量内部的逆……

[解决办法]
x相等的情况可以特殊处理一下,哪怕是专门做一次计数,也只是O(n)的

探讨
还是有问题,就是两个集合中的x有若干个相等的时候如何解决。
比如
A={(1,3)(1,5)(1,8)}
B={(1,4)(5,6)(8,9)}

热点排行