pesos árbol binario completo 2019 Décima puente azul taza de G

Preguntas G: completa pesos binario
Tiempo límite: límite de memoria 1.0s: 256.0MB a cabo esta pregunta: 20 minutos
[Problemas] Descripción
Dadas nodos N que comprenden un árbol binario completo , cada nodo del árbol tiene un peso en orden desde la
parte superior a la inferior, de izquierda a derecha, seguido de un 1, un 2, ··· AN , como se muestra a continuación:

En este momento los nodos de la misma profundidad Xiao Ming ponen valores juntos, lo que quería saber qué nodo profundidad de
la suma ponderada y el máximo? Si usted tiene más peso y profundidad con la máxima, profundidad mínima de salida que ellos.
Nota: la profundidad de la raíz es 1.
[Formato de entrada
de la primera fila contiene un número entero N.
La segunda línea contiene N enteros A 1, A 2, ··· AN .
[] Formato de salida
de salida representativa de una respuesta entero.
[] De entrada de muestra
. 7
. 1. 6. 5. 4. 3. 1 2

[Salida] Muestra
2
[Evaluación] y convenciones usadas en el Ejemplo escala
para la evaluación de todos los casos de uso, 1 ≤ N ≤ 100000, -100.000 ≤ A i ≤ 100000.

análisis

① porque el tema que es un árbol binario completo, que puede ser almacenado con el subíndice fin, prestar atención 1 desde el principio;

② de dos ciclos calcular pesos de cada nodo, para registrar la máxima;

. 1 #include <bits / STDC ++ H.>
 2  el uso de  espacio de nombres STD;
 . 3  const  int MAXN = 1,000 ;
 . 4  int main () {
 . 5      int A [MAXN], C [ 21 es ] = { 0 }; // A para secuencialmente árboles de almacenamiento peso, c para el valor de profundidad derecho correspondiente al árbol de almacenado 
6.      int n-; // K es la profundidad 
7.      Scanf ( " % D " , y n-);
 . 8      para ( int I = 1. ; I <= n-; I ++ ) {
 9.          Scanf ( " % D ", & a [i]);
10      } 
 11      c [ 1 ] = a [ 1 ]; // 第一层单独处理
12      int k = 2 ;
13      int ans = 1 ;
14      para ( int i = 2 ; i <= n; i = i + pow ( 2 , k- 2 )) {
 15          para ( int j = i; (j <i + pow ( 2 , k- 1 )) && (j <= n); j ++ ) {
 16              c [k] + = a [j];
17          }
 18          si(c [k]> c [k- 1 ]) ans = k;
19          k ++ ;
20      }
 21      cout << c [ 4 ] << endl;
22      printf ( " % d " , ANS);
23 }

 

Supongo que te gusta

Origin www.cnblogs.com/taiga/p/12501160.html
Recomendado
Clasificación