Algorithm 下降段以一定概率与其他段重新结合,确定该段的预期中等长度

Algorithm 下降段以一定概率与其他段重新结合,确定该段的预期中等长度,algorithm,Algorithm,这是一个非常棘手的问题,只是一个提醒 我们有N段,编号从1到N,由它们的左右点定义,{left[i],right[i]} i-th段位于高度N-i。第一部分(最高部分)开始下降,而其他部分保持不变。如果在下降过程中,一段i至少在一点上与另一段j相交,则两者将以概率P[j]/Q[j]重新结合,并且获得的段将继续下降。从两段的重新组合,{A,B}和{C,D},得到的段将是{min(A,C),max(B,D)} 要求您确定第一个管段的预期中等长度(即达到小于任何其他管段高度后)。如果此答案是一个有理

这是一个非常棘手的问题,只是一个提醒


我们有
N
段,编号从
1
N
,由它们的左右点定义,
{left[i],right[i]}

i
-th段位于高度
N-i
。第一部分(最高部分)开始下降,而其他部分保持不变。如果在下降过程中,一段
i
至少在一点上与另一段
j
相交,则两者将以概率
P[j]/Q[j]
重新结合,并且获得的段将继续下降。从两段的重新组合,
{A,B}
{C,D}
,得到的段将是
{min(A,C),max(B,D)}

要求您确定第一个管段的预期中等长度(即达到小于任何其他管段高度后)。如果此答案是一个有理数
U/V
,则要求您确定
X
,以便
X*V=U(mod 10^9+7)


限制:

  • 0
  • 0
  • N≤ 100000
  • 时间:2.5秒
  • 内存:32768 KB
`


输入在第一行包含
N
,然后在下面的
N
行中有4个整数:
Left,Right,p,Q,
表示
i
-第
[Left,Right]
段,概率
p/Q
与下降段重新结合。 例如:

答案大约是49.813963


想法1 最后一段的长度为R-L,其中R是右端的位置,L是左端的位置

期望是一个线性运算,所以

E(长度)=E(R)-E(L)

我们可以分别计算E(R)和E(L),然后将结果合并

想法2 我们可以迭代计算左端位置的PDF

它开始于第一段的左端(左[1]),概率为1

当它经过段i时,如果左端在左[i]和右[i]之间,将发生有趣的碰撞。我们将有趣的碰撞定义为影响左端位置的碰撞

这里的关键点是,如果我们需要知道右端的当前位置以确定是否存在碰撞,那么这不是一个有趣的碰撞!这是因为如果我们需要知道右端,那么线段i必须完全位于起点的右侧,因此它不会影响左边缘的位置

因此,为了更新PDF,我们收集了左[i]和右[i]之间的所有概率质量,乘以碰撞概率,并将结果添加到左[i]。(这些位置的现有质量按碰撞概率缩小。)

想法3 目前我们有一个O(n^2)算法,由O(n)的n次迭代组成,用于计算和修改每个范围内的质量


但是,我们可以使用数据结构(如a)来允许我们在O(logn)时间内执行每次迭代,总时间复杂度为O(nlogn)。

您尝试过这个问题吗?你有任何代码吗?我只考虑过它,所以没有代码,除了暴力手段,我没有任何有价值的想法。预期的中等长度意味着什么?它只是长度的期望值吗?我不这么认为,不,否则它不会说中等。加上点的位置是由整数决定的。在这个例子中,答案是一个有理数aprox。49.81,预计没有一段会那么长。我认为这是所有预期长度乘以各自结果概率的算术平均数。
input:
5
35 64 58 873
41 70 407 729
18 90 165 628
10 57 33 104
60 69 152 466

output:
779316733