zoukankan      html  css  js  c++  java
  • 洛谷 p1031

    可以先算平均值,然后计算每一个堆和平均值的差距,将这些差距值存在另一个数组里,从小到大遍历这个数组,若不为0则把它的值加到下一个元素里,然后次数加一。这相当于每次将这一个堆的帐记到下一个堆里面,这样就只用一路往数组右边前进,不用考虑某个大于平均值的堆要怎样往左右分配,我不太知道这种思想算什么思想,可能是减治思想,值得借鉴

    #include<stdio.h>
    
    int main(void){
        int n;
        scanf("%d", &n);
        int heap[n];
        int give[n];
        int sum=0, avg;
        for(int i=0; i<n; i++)
            give[i] = 0;
        for(int i=0; i<n; i++){
            scanf("%d", &heap[i]);
            sum += heap[i];
        }
        avg = sum/n;
        for(int i=0; i<n; i++){
            give[i] = heap[i] - avg;
        }
        int steps=0;
        for(int i=0; i<n-1; i++){
            if(give[i] != 0){
                give[i+1] += give[i];
                steps++;
            }
        }
        printf("%d", steps);
        return 0;
    }
  • 相关阅读:
    预编译命令 #if DEBUG
    conda常用命令
    tensorflow 安装指南
    LocNET和池化理解
    同时安装cuda8和cuda9
    np.transpose
    python中List的slice用法
    书单
    训练工程
    linux 查看进程
  • 原文地址:https://www.cnblogs.com/ssNiper/p/11125285.html
Copyright © 2011-2022 走看看