partición Luo Gu P2320

Guiguzi muy inteligente, debido a esto, está muy ocupado, a menudo los príncipes del coche para venir a obtener asesoramiento sobre comisionado de actualidad.

Un día, él viajó en Xianyang, cuando un amigo le dijo a una subasta que se realizará en Xianyang mayor casa de subastas (firma del tesoro), hay un tesoro que le produjo un gran interés, y que es sin palabras libro.

Pero su itinerario es muy completo, caballo de larga distancia que había comprado un boleto para Handan, por desgracia, la hora de salida es en la subasta está a punto de terminar. Así que decidió preparar con antelación, usted será dueño de un número bien de monedas de oro y un poco de dinero con una buena bolsa, a su capacidad de pago en virtud de monedas de oro existentes, cualquier número de monedas que se puede utilizar una combinación de estos dinero cerrada buena pagar la factura.

Guiguzi también una persona muy ahorrativa, intentó hacer su propio bolsillo en la premisa de cumplir los requisitos anteriores, con el número mínimo, y no hay dos bolsillos idénticos con el número de oro superior a 1. Se supone que hay m monedas de oro, se puede adivinar lo mucho que usaría un monedero, dinero y cuántas monedas de cada embolsado ella?

Formato de entrada
comprende un número entero que representa el número total Guiguzi convencional de monedas m. Lo cual, 1≤m ≤1000000000.

Formato de salida
dos filas, una primera número entero fila H, indicando el número de monedero usado

La segunda línea indica que se carga el número de monedas de cada bolsa, la salida de pequeño a grande, separada por espacios

Muestra Input Output
Input # 1 Copia
3
salida de la copia # 1
2
1 2

Significado de las preguntas: para darle un número que se divide en una serie de individual y no puede ser duplicada distinto a 1, y conoce el 1 ~ n-1 se puede obtener por el número de puntos cada uno, y pueden dividirse en al menos pedir a un escaso número de
las ideas: cerebro-dong ... vistazo a la amplia gama de datos ... enumeración violencia escandalosa (x) Buscar (x) dp (x) calcula que la complejidad puede ser tenido en O (log n) para que la partición estaba fuera de las castañas, como para darle un 20 que se puede dividir en 1 a 10 y 11-20 y 1-10 a su vez pueden dividirse en sub-secuencia abajo 1-5 y 6-10 se obtiene cuando n> 2 se puede dividir en la N-1-n / 2 y n / 2 + 1 - n satisfacer la idea partición

#include <iostream>

using namespace std;

int a[100005];

int main()
{

    ios::sync_with_stdio(false);

    int n;

    cin >> n;

    int k=0;

    while(n)
    {
        a[++k]=(n+1)/2;
        n/=2;
    }

    cout << k << endl;

    for(int i=k;i>=1;i--)
        cout << a[i] << " ";

    cout << endl;

    return 0;
}
Publicado 54 artículos originales · ganado elogios 0 · Vistas 1224

Supongo que te gusta

Origin blog.csdn.net/weixin_44144278/article/details/99618573
Recomendado
Clasificación