[CF959E] Mahmoud y Ehab y el xor-MST - codiciosos, árbol de expansión mínimo

\ (N- \) completamente icono número de puntos \ ((n --- 0. 1) \) , \ (I \) y \ (J \) de borde conectado valor de peso \ (i \ \ textrm {XOR } \ j \) , la evaluación del MST

Solución

Set \ (f [n] \) representado por puntos es \ (n + 1 \) respuesta, las posibilidades codicioso considerado, obviamente \ (f [0] = 0 , f [n] = f [n-1] + lowbit (n) \)

La observación fácilmente disponible \ (F [n-] = 2F [n-- 1.] + 2 ^ n -. 2 ^ {. N-- 1} \) , y porque \ (F [] \) es un \ (lowbit \) prefijo y cumplir con aditivo, de manera tan directa \ (n \) la descomposición binaria y estadísticas a la respuesta

#include <bits/stdc++.h>
using namespace std;

#define int long long
const int N = 1000005;
int f[N],n,ans;

signed main() {
    cin>>n;
    --n;
    f[0]=1; f[1]=3; f[2]=8;
    for(int i=3;i<=40;i++)
        f[i]=f[i-1]*2-(1ll<<(i-1))+(1ll<<i);
    for(int i=0;i<=40;i++) if(n&(1ll<<i)) ans+=f[i];
    cout<<ans;
}

Supongo que te gusta

Origin www.cnblogs.com/mollnn/p/12586581.html
Recomendado
Clasificación