I am confused about how to implement a strategy for Grover's search with multiple solutions. My goal is to find all $t$ solutions in $N$ elements. I got this question because I found people used query complexity $O(\sqrt{Nt})$ for analyzing algorithms.
There are two conditions: changed Oracle or constant Oracle. If the Oracle is not modified, the cost of finding each solution is $O(\sqrt{\frac{N}{t}})$. In this case, the total complexity is $O(\sqrt{Nt})$, which makes sense to me. However, if we use a different strategy, that is changing the Oracle so that the Grover's search will not find a found element, the total complexity is $O(\sqrt{\frac{N}{t}})+O(\sqrt{\frac{N}{t-1}})+...+O(\sqrt{N})$. This total complexity cannot be bounded by $O(\sqrt{Nt})$.
However, there is a problem for a constant Oracle: Suppose we have 10 elements, and 0,1,2,3 are solutions. Firstly, Grover's search returns a true solution (assume 0 in the first round). In the second and the third round, let's assume the subroutine returns 1 and 2, respectively. The problem may occur in the fourth step: The algorithm still returns a value in [0,1,2], so the subroutine believes there is no more solution and stops. Finally, this subroutine only finds 3 solutions instead of 4.
Is there any idea to tackle this problem? I want to get an strategy to get all t solutions in $O(\sqrt{Nt})$ time.