Codeforces Round 1133 (Div. 1, Div. 2) is coming soon! Register here. ×

MODDI's blog

By MODDI, history, 4 years ago, In English

We have an N*N matrix, can we achieve better than transposing the matrix into an array, and then sorting it?

I did some online searching and found that quickselect eliminates the log factor, how can we extend quickselect to 2 dimensions?

  • Vote: I like it
  • 0
  • Vote: I do not like it

»
4 years ago, hide # |
← Rev. 3  
Vote: I like it +38 Vote: I do not like it

Convert the matrix to an array first, then use nth_element(x,x+n/2,x+n). The overall complexity is the same as the input complexity, which has reached the lower bound.

nth_element is $$$\Theta(n)$$$.

»
4 years ago, hide # |
 
Vote: I like it -21 Vote: I do not like it

Just use the Thanos algorithm: among $$$n^2$$$ elements of the matrix, select random $$$n$$$ and find their median with nth_element ;-)

  • »
    »
    4 years ago, hide # ^ |
     
    Vote: I like it 0 Vote: I do not like it

    How can we efficiently select n random elements from the matrix without iterating over the full matrix?

  • »
    »
    4 years ago, hide # ^ |
    ← Rev. 2  
    Vote: I like it +5 Vote: I do not like it

    And let's we want to extend the program, and find the smallest median among every submatrix of size K*K, how can we solve this?

»
4 years ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

Auto comment: topic has been updated by MODDI (previous revision, new revision, compare).