¿Qué significa 0x3f3f3f3f? ? ?

What Does 0x3f3f3f3f Mean

Cuando estaba haciendo una solución de resolución de problemas recientemente, descubrí que a menudo hay una línea de este tipo en el informe del gran problema: ↓↓

|_+_|

Luego fui a explorar, el decimal de 0x3f3f3f3f es 1061109567, que es el nivel 10 ^ 9, y los datos en el caso general son menos de 10 ^ 9, por lo que se puede usar como infinito sin hacer que los datos sean más grandes que el infinito.



En general, habrá algunos problemas inexistentes en medio del problema de dfs o dp. Por lo general, uso un método para devolver un valor grande, por lo que no obtendré esto cuando llegue al mínimo. Es una práctica profesional), generalmente elijo un valor imposible cuando tomo este 'valor muy grande', por ejemplo, bfs para encontrar el camino más corto es un árbol de 10000 capas, tome un 10005.



La macro define un 0x3f3f3f3f para reducir el tiempo considerado, y en general se puede utilizar como un número infinito.



Cita una descripción del blog de otra persona:

0x3f3f3f3f es un valor útil, que es el entero más grande que satisface las dos condiciones siguientes.

1, el doble del entero no excede 0x7f7f7f7f, es decir, el entero positivo más grande que int puede representar.



2. Cada 8 bits (cada byte) de un entero es igual.

A menudo necesitamos usar memset (a, val, sizeof a) para inicializar una matriz a en el diseño del programa. Esta declaración llena el valor val (0x00 ~ 0xFF) en cada byte de la matriz a, por lo que solo se puede asignar con memset. 'Los enteros de cada 8 bits son iguales'.

Cuando es necesario inicializar el valor en una matriz a infinito positivo, para evitar un desbordamiento aritmético aditivo o un juicio engorroso, a menudo usamos memset (a, 0x3f, sizeof (a)) para asignar el valor de 0x3f3f3f3f a la matriz en su lugar .

También puede consultar esto: https://blog.csdn.net/jiange_zh/article/details/50198097