Estoy trabajando en el problema H en el concurso ACM ICPC 2004–2005 del noreste de Europa .
El problema es básicamente encontrar el peor de los casos que produce un número máximo de intercambios en el algoritmo (tamizar hacia abajo) para construir el montón.
- Entrada: el archivo de entrada contiene ( ).
 - Salida: genera la matriz que contiene números enteros diferentes de a , de modo que es un montón, y al convertirla en una matriz ordenada, el número total de intercambios en las operaciones de cribado es lo máximo posible.
 
Entrada de muestra: 6
Salida correspondiente:6 5 3 2 4 1
Y los resultados básicos:
[2, 1]   
[3, 2, 1]   
[4, 3, 1, 2] 
[5, 4, 3, 2, 1] 
[6, 5, 3, 4, 1, 2]
                
                    
                        algorithms
                                data-structures
                                algorithm-analysis
                                sorting
                                
                    
                    
                        jonaprieto
fuente
                
                fuente

Respuestas:
Dado el peor de los casos paran , podemos construir el peor de los casos para n+1  de la siguiente manera: hacemos un 'ciclo de intercambio' de la siguiente manera: tomamos n+1 , ponlo adentro a [ 0 ] y cambiamos a [ 0 ]  con el elemento máximo de sus hijos, que es a [ 1 ]  o a [ 2 ] , que nuevamente intercambiamos con el elemento máximo de sus elementos secundarios, y así sucesivamente, hasta que dejamos el norte -elemento montón, en ese punto ponemos ese último elemento en el n + 1 -a posición.
Un ejemplo: el peor de los casos paran = 5  es [ 5 , 4 , 3 , 2 , 1 ] . Intercambiamos 6 que crea el montón[ 6 , 5 , 3 , 4 , 1 ] , después de lo cual terminamos con 2, que insertamos al final: [ 6 , 5 , 3 , 4 , 1 , 2 ] .
El método anterior funciona por inducción: partimos del peor resultado paran - 1  elementos y realizar una operación de cribado hacia abajo en reversa, maximizando el número de intercambios que tiene que hacer (⌊ log( n ) ⌋ intercambios). No puede hacer más intercambios que este, por lo que maximiza el número de intercambios después de la primera operación de extracción mínima, después de lo cual le queda exactamente el peor de los casos paran - 1 elementos para la próxima operación extract-min. Esto implica que el número de intercambios es de hecho máximo.
Tenga en cuenta que este método proporciona resultados diferentes de los que obtuvo:
Sin embargo, ambas soluciones son correctas:
fuente