• 【51nod-1596】搬货物


    现在有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
    合并后找有几个不同的2的幂即可,注意i从0开始循环
     
     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 const int N = 1e6+60;
     4 int a[N];
     5 int main()
     6 {
     7     int n, x;
     8     cin>>n;
     9     for(int i = 1; i <= n; i++)
    10     {
    11         scanf("%d", &x);
    12         a[x]++;
    13     }
    14     int num = 0;
    15     for(int i = 0; i <= N; i++)
    16     {
    17         a[i+1] += a[i]/2;
    18         num += a[i]%2;
    19     }
    20     cout<<num<<endl;
    21     return 0;
    22 }
     
  • 相关阅读:
    PHP程序十点未来的建议
    网站入侵思路
    SQL注入初探
    php安全学习笔记
    BLE协议分析
    调用NMAP批量扫描IP端口
    安卓系统手机目录
    xss绕过过滤方法
    xss测试用例
    python爬虫
  • 原文地址:https://www.cnblogs.com/lesroad/p/8697860.html
Copyright © 2020-2023  润新知