zoukankan      html  css  js  c++  java
  • 51nod1596 搬货物

    现在有n个货物,第i个货物的重量是 2wi 。每次搬的时候要求货物重量的总和是一个2的幂。问最少要搬几次能把所有的货物搬完。

    样例解释:

    1,1,2作为一组。

    3,3作为一组。

    Input

    单组测试数据。
    第一行有一个整数n (1≤n≤10^6),表示有几个货物。
    第二行有n个整数 w1,w2,...,wn,(0≤wi≤10^6)。

    Output

    输出最少的运货次数。

    Input示例

    样例输入1
    5
    1 1 2 3 3

    Output示例

    样例输出1
    2
    #include <bits/stdc++.h>
    using namespace std;
    
    typedef long long ll;
    const int N = 1000000 + 100, INF = 0x3f3f3f3f;
    
    int a[N], num[N];
    
    int main()
    {
        int n;
        scanf("%d", &n);
        memset(num, 0, sizeof num);
        for(int i = 1; i <= n; i++)
        {
            scanf("%d", &a[i]);
            num[a[i]]++;
        }
        int ans = 0;
        for(int i = 0; i <= 1000000+20; i++)
        {
            num[i+1] += num[i] / 2;
            num[i] %= 2;
            ans += num[i];
        }
        printf("%d
    ", ans);
        return 0;
    }
  • 相关阅读:
    spring声明式事务管理详情解析
    Nginx nginx.conf配置文件详细说明
    etcd
    rsyslog使用简介
    LINUX常见命令
    kafka简介&使用
    kafka安装
    Zookeeper简介&应用场景
    Zookeeper安装
    安装JDK
  • 原文地址:https://www.cnblogs.com/aerer/p/9930935.html
Copyright © 2011-2022 走看看