Sucede. Y creo que sucede mucho más a menudo de lo que la mayoría de ustedes piensan.
En primer lugar, truco fácil para su pregunta: escriba una solución correcta y haga que falle solo un caso de prueba: agregue a su código algo como si (n == 11241251) do_something_wrong ();
Estrictamente hablando, esta solución ya es incorrecta para algunos datos de entrada (tal vez para uno solo), pero fallará solo si dicha prueba se presenta en el conjunto de datos. En la mayoría de los problemas, no todas las entradas posibles están cubiertas por datos de prueba, por lo tanto, tal truco es posible. No tiene mucho sentido, pero formalmente es lo que estaba preguntando.
- ¿Cuánto debo cobrarle a mi cliente por un sitio web diseñado a medida, incluidos los códigos de fondo?
- ¿Cuál es la lista de algunos buenos sitios web para escribir ensayos?
- Si sabes cómo hacer un sitio web, ¿cómo haces una aplicación?
- ¿Es legalmente correcto hacer un hipervínculo a otro contenido de mi sitio web? Cuando el usuario hace clic en el enlace, abrirá ese sitio web en una nueva ventana.
- Cómo obtener HTTPS gratis en mi sitio web
Otra cosa para pensar es usar algoritmos aleatorios. Los concursantes a menudo usan algoritmos que fallan en algunos casos, o en la mayoría de los casos, o incluso en todos los casos, con una probabilidad fija muy pequeña. Si su solución produce una respuesta incorrecta con probabilidad 1e-50, definitivamente es posible que falle; pero espera que esta solución obtenga CA, estos 1e-50 son insignificantemente pequeños.
Y también sucede a menudo que el algoritmo determinista que usted escribió está fallando en muchos casos de prueba, pero obtiene AC. Creo que esta es la parte más cercana al significado previsto de su pregunta. Créeme, sucede a menudo. A menudo sucede cuando algunos principiantes preparan el concurso para otros principiantes. Pero incluso en concursos serios, sigue siendo un problema común.
Ya tengo algo de experiencia trabajando en un concurso como probador; Te diré que muy a menudo cuando el autor piensa que los casos de prueba ya son lo suficientemente buenos, o incluso cuando el autor y el evaluador piensan de esta manera, resulta que están equivocados y, de hecho, las pruebas deben mejorarse mucho 🙂 Incluso si tiene una buena experiencia con la redacción de soluciones difíciles / hacky por su cuenta, nunca podrá adivinar todos los trucos / hacks / heurísticas que se le ocurrirán a otras personas.
¿Por qué no sabemos sobre problemas con los casos de prueba que son débiles? A menudo, nadie escribe una solución que está mal pero pasa todas las pruebas dadas; y cuando las personas tienen tales soluciones, a menudo no se dan cuenta del hecho de que sus soluciones son incorrectas; y cuando lo entienden, a menudo no quieren hacerlo público debido a algunas razones (no quieren molestar o dañar al autor, sienten vergüenza de obtener AC para una solución incorrecta, etc.), pueden decirle al problema al respecto en una conversación privada o no se lo digas a nadie.
Por cierto, Michal Danilák contó una historia interesante en su respuesta a esta pregunta: ¿es útil la fase de desafío en TopCoder?
Y sobre mi experiencia … Tengo la experiencia de escribir una solución aleatoria con solo un 80% de posibilidades de aprobación. Tengo la experiencia de escribir una solución para un problema en un concurso internacional in situ en el que tuve que codificar el caso de muestra para obtener AC; resultó que mi solución de geometría es lo suficientemente precisa para todas las demás pruebas en el conjunto de datos, excepto la muestra (que no era de hecho, el peor de los casos para esta solución). Tengo una experiencia de escribir 5 soluciones para una tarea, las 5 dan diferentes respuestas para la misma prueba, pero las 5 reciben AC. Vi un concurso regional donde las soluciones oficiales de los creadores de problemas estaban equivocadas, pero estaban pasando todas las pruebas de un conjunto utilizado en el concurso. Vi un problema en CodeForces donde la entrada es un solo número de hasta unos pocos miles, y sin embargo, mi solución de CA funcionaba mal durante unas pocas docenas de números, y al cambiar algunas constantes logré obtener la solución de CA que estaba fallando ~ 7 % de todos los casos de prueba posibles (por lo que era natural esperar que fallara incluso un conjunto de pruebas aleatorias con un número relativamente grande de pruebas). Entonces confía en mí, sucede. Sucede a menudo.