Dieses Problem stammt von interviewstreet.com
Wir werden eine Reihe von ganzen Zahlen gegeben , der darstellt Liniensegmente so , dass Endpunkte des Segments sind und . Stellen Sie sich vor, dass von oben auf jedem Segment ein horizontaler Strahl nach links geschossen wird und dieser Strahl stoppt, wenn er ein anderes Segment berührt oder auf die y-Achse trifft. Wir konstruieren ein Array von n ganzen Zahlen, , wobei gleich der Länge des Strahls ist, der von der Spitze des Segments geschossen wird . Wir definieren .n i ( i , 0 ) , ( i , y i ) , v 1 , . . . , V n v i i V ( y 1 , . . . , Y n ) = v 1 + . . . + v n
Wenn wir zum Beispiel , dann ist , wie im Bild unten gezeigt:[ v 1 , . . . , v 8 ] = [ 1 , 1 , 3 , 1 , 1 , 3 , 1 , 2 ]
Für jede Permutation von können wir berechnen . Wenn wir eine gleichmäßig zufällige Permutation von wählen , was ist der erwartete Wert von ?[ 1 , . . . , N ] V ( y P 1 , . . . , Y p n ) p [ 1 , . . . , N ] V ( y P 1 , . . . , Y p n )
Wenn wir dieses Problem mit dem naiven Ansatz lösen, ist es nicht effizient und läuft praktisch für immer für . Ich glaube, wir können dieses Problem lösen, indem wir den erwarteten Wert von für jeden Stick unabhängig berechnen , aber ich muss noch wissen, ob es einen anderen effizienten Ansatz für dieses Problem gibt. Auf welcher Basis können wir den erwarteten Wert für jeden Stab unabhängig berechnen?v i