zoukankan      html  css  js  c++  java
  • [HAOI 2008]糖果传递

    Description

    有n个小朋友坐成一圈,每人有ai个糖果。每人只能给左右两人传递糖果。每人每次传递一个糖果代价为1。

    Input

    第一行一个正整数nn<=1'000'000,表示小朋友的个数.
    接下来n行,每行一个整数ai,表示第i个小朋友得到的糖果的颗数.

    Output

    求使所有人获得均等糖果的最小代价。

    Sample Input

    4
    1
    2
    5
    4

    Sample Output

    4

    题解

    咳咳...[UVa 11300]Spreading the Wealth

     1 //It is made by Awson on 2017.10.23
     2 #include <set>
     3 #include <map>
     4 #include <cmath>
     5 #include <ctime>
     6 #include <cmath>
     7 #include <stack>
     8 #include <queue>
     9 #include <vector>
    10 #include <string>
    11 #include <cstdio>
    12 #include <cstdlib>
    13 #include <cstring>
    14 #include <iostream>
    15 #include <algorithm>
    16 #define LL long long
    17 #define Min(a, b) ((a) < (b) ? (a) : (b))
    18 #define Max(a, b) ((a) > (b) ? (a) : (b))
    19 #define sqr(x) ((x)*(x))
    20 #define Abs(a) ((a) < 0 ? (-(a)) : (a)) 
    21 using namespace std;
    22 const int N = 1000000;
    23 
    24 LL n, a[N+5], m;
    25 
    26 void work() {
    27   scanf("%lld", &n);
    28   for (int i = 1; i <= n; i++) {
    29     scanf("%lld", &a[i]); m += a[i];
    30   }
    31   m /= n;
    32   for (int i = 1; i <= n; i++) {
    33     a[i] = a[i-1]+a[i]-m;
    34   }
    35   sort(a+1, a+n+1);
    36   LL mid = a[n>>1], ans = 0;
    37   for (int i = 1; i <= n; i++) ans += Abs(mid-a[i]);
    38   printf("%lld
    ", ans);
    39 }
    40 int main() {
    41   work();
    42   return 0;
    43 }
  • 相关阅读:
    用Django开发简单的POST/GET接口
    搭建Django环境
    用Django创建一个项目
    NodeJS服务器退出:完成任务,优雅退出
    linux 常用bash
    泛型笔记
    finderweb日志查看系统配置使用
    finderweb日志查看系统部署
    jenkins+gitlab自动部署代码
    jenkins 配置 git拉取代码
  • 原文地址:https://www.cnblogs.com/NaVi-Awson/p/7718726.html
Copyright © 2011-2022 走看看