zoukankan      html  css  js  c++  java
  • 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

    进行二进制进位运算,当有一位为1时sum++,直至最后。

    AC代码:

     1 #include<bits/stdc++.h>
     2 #define maxn 1000100
     3 int w[maxn]; 
     4 int main()
     5 {
     6     int n,i;
     7     while(scanf("%d",&n)!=EOF)
     8     {
     9         memset(w,0,sizeof(w)); 
    10         while(n--)
    11         {
    12             scanf("%d",&i);
    13             w[i]++; 
    14         } 
    15         int sum=0;
    16         for(int j=0;j<maxn;++j)
    17         {
    18             if(w[j]>1)
    19             {
    20                 w[j+1]+=w[j]/2;
    21                 w[j]%=2; 
    22             } 
    23             if(w[j]==1)
    24                 ++sum; 
    25         } 
    26         printf("%d
    ",sum); 
    27     } 
    28     return 0;
    29 } 
  • 相关阅读:
    stm32 usart 串口
    stm32 usart 串口
    stm32 PWM
    stm32 PWM
    stm32 定时器 通用定时器
    stm32 定时器 通用定时器
    stm32 外部中断
    linux+jre+apache+mysql+tomcat调优
    Cent OS服务器配置(JDK+Tomcat+MySQL)
    linux---文本编辑vi
  • 原文地址:https://www.cnblogs.com/Kiven5197/p/7222528.html
Copyright © 2011-2022 走看看