Número de pruebas (Copa Blue Bridge)

prefacio

Me topé con un tema así cuando estaba repasando las preguntas. A primera vista, era bastante simple. No esperaba que fuera tan simple
. ¡Lo siento!

tema

Título: Los habitantes del planeta x tiempos de prueba no son muy bonachones, pero afortunadamente, el único comportamiento anormal cuando están enojados es: dejar caer sus teléfonos móviles. Los principales fabricantes también han lanzado una variedad de teléfonos móviles resistentes a las caídas. La Oficina de Supervisión de Calidad del Planeta X estipula que el teléfono móvil debe pasar la prueba de caída y evaluar un índice de resistencia a la caída antes de que se le permita entrar en circulación.
Planet X tiene muchas torres imponentes que son perfectas para una prueba de caída. Cada piso de la torre tiene la misma altura, con una ligera diferencia en la Tierra, su primer piso no es el suelo, pero es equivalente a nuestro segundo piso.
Si el teléfono se cae desde la séptima capa sin romperse, pero la octava capa está rota, el índice de resistencia a caídas del teléfono es 7. En particular, si el teléfono se rompe cuando se cae desde la primera capa, el índice de resistencia a caídas = 0.
Si el enésimo piso del piso superior de la torre no está roto, entonces el índice de resistencia a la caída = n Para reducir el número de pruebas, se toman muestras de 3 teléfonos móviles de cada fabricante para participar en la prueba.
En una prueba, la altura de la torre es de capas 1000. Si siempre adoptamos la mejor estrategia, ¿cuántas veces se tarda en determinar el índice de resistencia a caídas del teléfono móvil con la peor suerte? Por favor complete este número máximo de pruebas.
Nota: lo que debe completarse es un número entero, no complete ningún contenido redundante.

punto de tarjeta

¿Cómo debo decir esta pregunta? Al principio, leí el título detenidamente, porque este es el título de la Copa JAVA Blue Bridge en el Grupo B en 2019, y es la cuarta pregunta. Así que lo pensé por un tiempo y escribí y descubrió que la respuesta era incorrecta. Después de verificarlo, no entendí cómo se les ocurrió a otros durante mucho tiempo, y finalmente escribí el reloj yo mismo y lo escribí.

¿Por qué no respondí a esta pregunta en ese momento, y me equivoqué? La razón principal fue que mi comprensión del idioma era relativamente pobre y siempre entendí el significado de su título.
También repetiré las palabras aquí, es decir, para pedirle que suelte el teléfono para probar el valor anticaída del teléfono.Si la primera capa no está rota, entonces el valor es al menos 1 y la segunda capa no. roto y luego +1, hasta que el teléfono esté roto, pruebe el valor de resistencia a la caída. Ahora suponga que hay tres teléfonos móviles y pregunte cuántas veces se dejan caer los tres teléfonos móviles para obtener el resultado si no tienen suerte.

Lo más odioso de esta pregunta es que es difícil pensar en cómo se cayó el teléfono. Si sabes cómo se cayó, puedes pensar en ideas directa y rápidamente. También estoy atrapado aquí y no entiendo cómo sucedió esto Un tiro, y luego la peor suerte.

Sin embargo, las sugerencias sobre dp aquí son bastante obvias. Una es la palabra "la mayoría", y el título equivale a decirle directamente los factores que afectan a dp, la cantidad de capas y la cantidad de teléfonos móviles. Así que esta pieza de dp es muy buena para pensar Primero, el valor es naturalmente lo que pedimos, y luego dp[i][j] donde i representa el piso y j representa el teléfono móvil. Por supuesto que puedes hacerlo al revés, pero yo lo prefiero así.

Por metro

En este momento, pensemos en cómo cayó este teléfono. Esta pieza, primero hagamos una tabla
inserte la descripción de la imagen aquí
. Este es el primer punto, podemos pensarlo fácilmente.

El siguiente es el caso de tener dos teléfonos móviles.

Si solo hay un piso, entonces mis dos teléfonos móviles también se caen una vez. Si son dos pisos, puedo dejarlo caer directamente en el segundo piso. Si está roto, iré al primer piso para probarlo. Si no está roto, lo probaré directamente, entonces solo necesito 1 vez. En otras palabras, también continué midiendo desde el primer piso y luego hasta el segundo piso. Si quiere el más grande, también le daré un 2 en este
inserte la descripción de la imagen aquí
momento.Si hay 2 teléfonos móviles, entonces habrá 3, 4 y 5 pisos. Si está en el tercer piso, obviamente se dejará caer directamente en el tercer piso primero, y se romperá una vez, pero la segunda vez no se romperá, y quedará un teléfono, entonces no puedo caer. directamente desde el segundo piso en este momento, solo puedo partir de 1. , eso es lo que le cuesta a un celular medir 2 capas como máximo, obviamente son 2 en este momento y luego agregar la anterior. entonces 3

Entonces, si dos teléfonos móviles tienen 4 capas, si sigo perdiéndolas directamente desde la 4.ª capa, entonces según nuestra suposición, lo peor es probablemente 4 veces, entonces, ¿qué pasa si empiezo a perderlas desde la 3.ª capa?

Así que aquí podemos resumir una tabla, para dos móviles, tirarlos desde distintos pisos, y luego medir los mejores y peores tiempos.
Entre ellos, bueno, roto se refiere a si la capa actual está rota
inserte la descripción de la imagen aquí

Entonces, en este momento, descubrimos que si seguimos la estrategia más estratégica y la peor suerte, no podemos comenzar a lanzar directamente desde el piso superior, pero obviamente de acuerdo con nuestro sentido común, es mejor lanzar directamente desde un lugar alto que directamente desde el primer piso. Pero obviamente no podemos ser directamente subjetivos, por lo que en este momento debemos elegir una estrategia adecuada.

transformación de problemas

Entonces, en este momento, hemos determinado que hay dos puntos a tratar en este problema, uno es determinar el dp y el otro es determinar la estrategia, que es el comienzo de la primera capa.


Entonces, la pregunta aquí obviamente es preguntarle cuántas veces necesita gastar bajo la mejor estrategia, es decir, la mayor y la menor en la tabla a continuación . Luego, la mayor parte de cada capa está determinada por si el teléfono está roto o no en la capa actual. Si no está roto
, entonces dp[ni][j] i es el número de capas e i es el número de teléfonos móviles. Si está roto, es 1+dp[i-1][j-1] y luego determine la mejor estrategia, complete el "más" correspondiente y estará bien

inserte la descripción de la imagen aquí

codificación

Puede ser un poco confuso decir esto, pero lo entenderá directamente cuando vea el código a continuación.

public class 测试次数 {
    
    
    static int N = 1000;
    static int M = 3;
    static int[][] dp = new int[N+1][M+1];
    public static void main(String[] args) {
    
    
        //初始化,第一台手机
        for (int i=1;i<N;i++){
    
    
            dp[i][1] = i;
        }

        //中间状态
        for (int i=2;i<=3;i++){
    
    
            for (int j=1;j<=1000;j++){
    
    
                //选择出最好的方案
                int min_val = Integer.MAX_VALUE;
                for(int k=1;k<=j;k++){
    
    
                    int max = Math.max(1 + dp[j - k][i], (dp[k - 1][i - 1])+1);
                    min_val = Math.min(max, min_val);
                }
                dp[j][i] = min_val;
            }
        }

        System.out.println(dp[N][M]);
    }
}

Resumir

Lo interesante de esta pregunta es cómo se cae el teléfono móvil, en realidad es muy fácil descifrar el proceso intermedio. Este también es un lugar interesante.

Supongo que te gusta

Origin blog.csdn.net/FUTEROX/article/details/123669007
Recomendado
Clasificación