Ronda CF # 633

Ronda CF # 633

A. Encuentra patrones

Empezar a pintar

https://www.luogu.com.cn/record/32752272

B. construcción, matemáticas

Dado un número n, encuentra una secuencia de ellos

Haga que la secuencia de valor absoluto formada por la diferencia entre el anterior y el siguiente en esta secuencia sea una secuencia no descendente

Idea: ordenar primero de pequeño a grande

El más grande está al final, el más pequeño está en el penúltimo, el segundo más grande está en el penúltimo, el segundo más pequeño está en el penúltimo ...

Atención, impares

https://www.luogu.com.cn/record/32752274

C. Matemáticas

Dada una secuencia

Puede agregar 2 ^ (T-1) a cualquier número de elementos en T segundos

Ahora pregunte al menos cuántos segundos tiene que terminar para que la secuencia no sea descendente

Idea: Obviamente, su valor final es lo más pequeño posible, y la combinación de la suma de P a la potencia de 2 puede constituir todos los valores posibles en 1-2 ^ (P + 1) -1, por lo que una vez que encuentre un elemento El primero es pequeño, entonces puedes hacerlo igual que el primero

Las estadísticas muestran que la mayor diferencia tiene su dígito más a la izquierda.

https://www.luogu.com.cn/record/32752240

D. Búsqueda, XOR

Dado un árbol, ahora debe dar los pesos de borde de modo que la suma XOR de la ruta simple formada por dos nodos secundarios sea 0

El tipo de peso que desea es el más pequeño, el más grande es

Ideas:

En primer lugar, le da a un árbol, cualquiera de los nodos para construir un árbol (no necesariamente un árbol binario)

El más pequeño no es más que 1 o 3.

Si las rutas formadas entre los nodos de la hoja son bordes pares, entonces puede asignar el mismo valor y hay bordes singulares, entonces se necesitan al menos 3 números, por qué (puede considerar comprimir la ruta en una cadena , El número impar en la cadena es 3

La construcción del árbol es aleatoria, por lo que la paridad de profundidad de los nodos de hoja de todos los subárboles es la misma, por lo que puede ser 1.

Pensar a su vez

Suponga que se pueden contar todos los lados y luego vea qué lados no son verdaderos

Por ejemplo, el nodo primario solo está conectado a dos nodos secundarios separados, entonces los dos bordes deben ser iguales, que es un borde menos

void dfs(int cur,int fa,int depth)
{	
	if(node[cur].size()==1)
	{
	    if(depth&1)ji=1;
	    else ou=1;
	    ans-=vis[node[cur][0]];
	    vis[node[cur][0]]=1;
	}
	for(int i=0;i<node[cur].size();i++)
	{
	    if(node[cur][i]!=fa)dfs(node[cur][i],cur,depth+1);
	}
}

Atencion

ans-=vis[node[cur][0]];
vis[node[cur][0]]=1;

No se puede escribir como

ans-=vis[fa];
vis[fa]=1;

Debido a que construye un árbol con destino, el nodo primario en sí puede ser un nodo hoja, así que preste especial atención

https://www.luogu.com.cn/record/32754469

Supongo que te gusta

Origin www.cnblogs.com/et3-tsy/p/12690657.html
Recomendado
Clasificación