Quiero unirme a NOIP. ¿Existe algún material didáctico para empezar desde cero? ¿Cómo puedo aprender Pascal para calificar para la competencia?
(Escribiendo todo a mano, 1434 palabras, muy agotador, espero que te sea útil)
Normalmente aprendo primero pascal, luego c/c y JAVA
Yo soy una persona que participó en NOIP y gané el primer premio. Puedes escuchar mi opinión.
De hecho, no necesitas ningún libro para aprender bien NOIP. tienes un profesor y un banco de preguntas (como tyvj), estarás bien
Para aprender bien NOIP, personalmente creo que se puede dividir en tres partes (llevará entre 1 y 2 años aprender todo de lo que hablaré a continuación)
① Gramática: ¡Aprender bien la gramática es la base! Solo después de haber aprendido la gramática podrás saber cómo usar el idioma. No necesito decirte esto
②Estructura de datos (la estructura de datos está separada del idioma, lo que significa que estas estructuras de datos están separadas del idioma). fácil de implementar en todos los idiomas): Esto es algo muy abstracto que incluye listas lineales, pilas, colas, montones, números, gráficos, cadenas, conjuntos, etc.
Se divide en 4 tipos: estructura lineal (uno a uno, como pila, cola), estructura de árbol (uno a muchos, como árbol), estructura fuera de tipo (sin conexión), estructura de malla (de múltiples a muchos, como se muestra en la figura)
Una pila es una especie de tabla FILO, que solo se ejecuta en un extremo para operaciones de entrada y salida, y se usa en la evaluación de expresiones. y operaciones de deshacer y recuperación
La cola es Una tabla FIFO que permite operaciones de inserción en un extremo y operaciones de eliminación en el otro.
Los árboles son complicados. Los árboles y los árboles binarios son dos conceptos diferentes. Lea el libro para obtener más detalles.
Hay muchos árboles binarios especiales, como árboles binarios completos, árboles binarios completos, árboles de Huffman y árboles binarios óptimos (los árboles de Huffman no son iguales a los árboles más binarios). ! Mucha gente se equivoca. Debido a que los árboles de Huffman no son necesariamente binarios)
Debes conocer los tres métodos de recorrido de un árbol binario: recorrido de orden previo (también llamado recorrido de raíz primero) alrededor de la raíz, recorrido en orden (también llamado recorrido de raíz media) alrededor de la raíz izquierda y recorrido posterior al orden (también llamado recorrido de raíz posterior) alrededor de la raíz. El gráfico de raíz es más complicado. Se puede dividir en conectado y desconectado. ponderado y no ponderado, dirigido y no dirigido, por lo que hay un gráfico (des)conectado, (no)dirigido (no)ponderado. ¿Qué más se puede decir sobre los gráficos fuertemente conectados y los gráficos débilmente conectados? ¡Lea el libro usted mismo!
③Algoritmos (los algoritmos son independientes del idioma, lo que significa que estos algoritmos son fáciles de escribir en todos los idiomas):
1. Algoritmos de bajo nivel (intencionalmente, al igual que las matemáticas elementales y Matemáticas avanzadas): búsqueda exhaustiva, búsqueda en profundidad (DFS) y búsqueda en amplitud (BFS, también llamada búsqueda en amplitud) son tres métodos transversales diferentes
2. Algoritmos avanzados: codicioso, ramificación , Programación Dinámica (DP). No presentaré los otros dos, ¡pero introduzcamos la programación dinámica!
Programación dinámica: La búsqueda en memoria utiliza los datos dejados por búsquedas anteriores para acelerar la solución de problemas de optimización de la toma de decisiones en varias etapas. Para poder programar dinámicamente, el problema debe cumplir dos condiciones (me tomó mucho tiempo memorizarlo)
①: Principio de optimización (también llamado principio de optimización): no importa cuál sea el estado o la decisión pasada -La toma es que, para el estado formado por la decisión actual, las decisiones restantes deben constituir la estrategia óptima.
②: Sin secuelas: Una vez determinada la decisión de un estado, la evolución posterior del proceso ya no se ve afectada por los estados y decisiones anteriores. El estado actual es un resumen completo de la historia anterior. y la historia anterior sólo puede utilizarse el estado actual para influir en la evolución futura del proceso.
El aprendizaje del PD generalmente comienza con una mochila. Hay 8 mochilas: 01 mochila, mochila completa, mochilas múltiples, mochilas mixtas de tres, mochilas de costos bidimensionales, mochilas agrupadas, mochilas dependientes y mochilas de artículos generalizados.
Luego aprenda programación dinámica de árbol
También hay algoritmos de clasificación: clasificación de burbujas, clasificación de selección, clasificación de inserción, clasificación rápida, clasificación de montón, clasificación Hill, clasificación de base, clasificación ordinal, cubo clasificación, clasificación por casillero, clasificación de árbol binario (usando un árbol de clasificación binario), clasificación de cóctel (que es una burbuja bidireccional, apareció en un programa perfecto para una competencia preliminar)
También hay algoritmos de teoría de números ( no introducción ampliada)
Algoritmo de teoría de grafos:
Camino más corto (como su nombre indica, es la distancia más corta de un punto a otro punto): Dijkstra, Flo Floyd, SPFA ( diseñado por chino, muy bueno), etc. también resolverá el problema del bucle de peso negativo de SPFA. Todos estos algoritmos resuelven el problema de la ruta más corta de una sola fuente, que es la ruta más corta desde un punto a todos los puntos).
Árbol de expansión mínimo (aplicado a gráficos conectados no dirigidos, lo que significa eliminar algunos bordes para minimizar la suma de los pesos de los bordes restantes mientras se garantiza que el gráfico esté conectado): Prim (Prim), Kruskal
Crítico ruta (ampliamente utilizada en producción y vida, ¡preste atención a la topología antes de realizar la ruta crítica!), clasificación topológica (se puede usar para detectar si hay bucles)), transmisión de red, etc.
Si Ya sabes todo lo anterior, felicidades, ¡no tendrás problemas para unirte al NOIP del grupo de popularización y al grupo de mejora!
Puede continuar aprendiendo algoritmos avanzados como búsqueda profunda bidireccional, búsqueda amplia bidireccional, búsqueda perimetral, búsqueda iterativa de profundización, búsqueda iterativa de ampliación, búsqueda heurística de amplitud primero A*, búsqueda iterativa A* profundización de la búsqueda, etc. para participar en concursos provinciales e incluso en concursos nacionales.