Preguntas sobre el algoritmo de prueba por computadora Huawei OD: tiempo de transporte

parte de la pregunta

tema Tiempo de transporte
dificultad Desastre
Descripción de la pregunta M (1 <= M <= 20) vehículos deben llegar al punto final en una carretera de un solo sentido que no puede adelantar, la distancia desde el punto de partida hasta el punto final es N (1 <= N <= 400). Después de que un automóvil rápido alcanza al automóvil de adelante, solo puede continuar conduciendo a la velocidad del automóvil de adelante. Calcula el tiempo que tarda el último vehículo en llegar a su destino.
Nota: Cada vehículo sale en un intervalo fijo de una hora. Por ejemplo, el primer vehículo sale a las 0 en punto, el segundo vehículo sale a la 1 en punto, y así sucesivamente.
Introduce la descripción Los dos números en la primera línea: MN representan el número de vehículos y la distancia hasta el punto final respectivamente, separados por espacios.
A continuación hay M líneas, cada línea contiene un número S, que representa la velocidad de cada vehículo. 0<S<30.
Descripción de salida El tiempo que tardó el último automóvil en llegar a su destino.
Información adicional ninguno
-------------------------------------------------- ----
Ejemplo
Ejemplo 1
ingresar 2 11
3
2
producción 5.5
ilustrar 2 autos, distancia 11, el auto que comienza a las 0 es más rápido, el auto que comienza a la 1, el costo para llegar al destino es 5.5.


Interpretación y análisis

Interpretación de la pregunta :

Se envía un vehículo cada hora. Si el vehículo de atrás es más rápido y ha alcanzado al vehículo de delante, la velocidad seguirá siendo la misma que la del vehículo de delante. Calcula el tiempo que tarda en llegar el último coche desde la salida hasta el destino.

Análisis e ideas :

Aunque la dificultad de esta pregunta es "difícil", la idea es muy sencilla.
A partir de las 0 en punto, el tiempo requerido para cada vehículo se calcula por turnos, dado que el vehículo de atrás es más rápido, si el vehículo de atrás alcanza al vehículo de delante, la hora de llegada será la hora del vehículo de delante menos 1. Comience con el primer auto y cuente hasta el último auto.

La complejidad del tiempo es O (n) y la complejidad del espacio es O (n).


Código

código java

import java.util.Scanner;

/**
 * 运输时间
 * @since 2023.09.21
 * @version 0.1
 * @author Frank
 *
 */
public class TransportTime {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while (sc.hasNext()) {
			String line = sc.nextLine();
			String[] cntDistance = line.split( " " );
			int count = Integer.parseInt( cntDistance[0] );
			int distance = Integer.parseInt( cntDistance[1] );
			
			String[] inputs = new String[count];
			for( int i = 0; i < count; i ++ )
			{
				inputs[i] = sc.nextLine();
			}			
			processTransportTime( count, distance, inputs );
		}
	}
	
	private static void processTransportTime( int count, int distance, String inputs[] )
	{
		float minTime = 0;
		for( int i = 0; i < count; i ++ )
		{
			int speed = Integer.parseInt( inputs[i] );
			float curTime = (float) distance / speed;
			if( i == 0 )
			{
				minTime = curTime;
				continue;
			}
			if( curTime < minTime - 1 )
			{
				minTime = minTime - 1;
			}else
			{
				minTime = curTime;
			}
		}
		System.out.println( minTime );
	}

}

código javascript

const rl = require("readline").createInterface({ input: process.stdin });
var iter = rl[Symbol.asyncIterator]();
const readline = async () => (await iter.next()).value;
void async function() {
    while (line = await readline()) {
        var cntDistance = line.split(" ");
        var cnt = cntDistance[0];
        var distance = cntDistance[1];

        var speeds = new Array();
        for (var i = 0; i < cnt; i++) {
            line = await readline();
            speeds[i] = parseInt( line );
        }
        processTransportTime(distance, speeds);
    }
}();

function processTransportTime( distance,speeds) {
    var minTime = 0;
    for (var i = 0; i < speeds.length; i++) {
        var speed = parseInt(speeds[i]);
        var curTime = distance / speed;
        if (i == 0) {
            minTime = curTime;
            continue;
        }
        if (curTime < minTime - 1) {
            minTime = minTime - 1;
        } else {
            minTime = curTime;
        }
    }
    console.log(minTime);
}

(encima)

Supongo que te gusta

Origin blog.csdn.net/ZiJinShi/article/details/133087272
Recomendado
Clasificación