• hihocoder-1820-切割木棒


    hihocoder-1820-切割木棒

    #1820 : 切割木棒

    时间限制:10000ms
    单点时限:1000ms
    内存限制:256MB

    描述

    小Hi有N根木棒,其中第i根的长度是Li。

    现在小Hi会进行多轮切割,每轮行动中小Hi会选出其中最短的木棒,不妨设其长度为X。然后将所有长度为X的木棒移除。再将剩余的木棒都切掉X长度。如此反复直到木棒一根也不剩。

    例如一开始木棒的长度是[2, 1, 3, 1],则第一轮之后1被移除,余下的又被切短为:[1, 2];第二轮之后余下的是[1];第三轮之后就一根也不剩了。

    给定N根木棒,请你计算每轮切割过后,剩余木棒的长度之和是多少。

    输入

    第一行包含一个整数N。

    第二行包含N个整数,L1, L2, L3, ... LN。

    对于50%的数据,1 ≤ N ≤ 1000

    对于100%的数据,1 ≤ N ≤ 100000 1 ≤ Li ≤ 1000000

    输出

    输出每轮之后剩余木棒的长度

    样例输入
    4
    2 1 3 1
    样例输出
    3
    1
    0

    题解:

      模拟题,按照题意来写代码逻辑即可。

    #include <cstdio>  
    #include <cstdlib>  
    
    const int MAXN = 100000 + 10; 
    
    int n; 
    int num[MAXN]; 
    
    int cmp(const void *a, const void *b)
    {
        return (*(int *)a - *(int *)b); 
    }
    
    int main(){  
    
        scanf("%d", &n);   
        long long total = 0; 
    
        for(int i=0; i<n; ++i)
        {
            scanf("%d", &num[i]); 
            total += num[i]; 
        } 
    
        qsort(num, n, sizeof(int), cmp);   
    
        int idx = 0, pre = 0; 
        while(idx < n) 
        { 
            total -= ((num[idx]- pre)*(n - idx));  
            pre = num[idx];  
            ++idx; 
            while(idx < n && num[idx] == num[idx-1])
            {
                idx++; 
            }  
            printf("%lld
    ", total );
        } 
    
        return 0; 
    }  
    

     

  • 相关阅读:
    kafka管理器kafka-manager部署安装
    kafka消息监控-KafkaOffsetMonitor
    在Kafka中修改Topic的preferred replica
    kafka中对一个topic增加replicas
    在kafka上对topic新增partition
    kafka log4j配置
    kafka安装与使用
    kafka 消息服务
    软件工程期末考试复习(一)
    PM2自动发布本地项目到服务器
  • 原文地址:https://www.cnblogs.com/zhang-yd/p/9652387.html
Copyright © 2020-2023  润新知