Dort werden Segment und Intervalbäume erklärt, wie z.B auch hier:
http://mylinux.rmz.uni-lueneburg.de/fern…Segmentbaum.htm
Natürlich kann man auch Versuchen diese Struktur hier dynamischer zu machen, indem man die Information nutzt, dass sie sich bewegen.
Der komplette Check ist in dieser Laufzeit drin und um O(n) kommst du beim der besten Ausnutzung der Informationen nicht herum und O(logn) ist dazu im Vergleich recht wenig.
Algorithmisch geht es sicher nicht besser (zumindest nicht mit dem Sweep-Line Ansatz, aber auch generell ist das denke ich eine untere Schranke, was aber zu beweisen wäre).
Auf jeden Fall denke ich, dass es eher schwer ist einen anderen Algorithmus zu finden, der bessere Konstanten hat, als der, aber ihr müsst es wissen, ob ihr es machen wollt, oder nicht.
Hmm. Kreise bringen nur eine kleine Anpassung des Algorithmus. Vielleicht vereinfacht sich das ganze aber auch extrem. Das müsste ich mir mal genau überlegen.
Ich wollts eigentlich nur mal gesagt haben, damit alle die gleichen Chancen haben, weil der Baum wahrscheinlich nicht sehr bekannt ist, aber doch eine gute Optimierung bringt.