前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【题解】Customising the Track

【题解】Customising the Track

作者头像
MikeC
发布2022-09-21 11:45:31
2610
发布2022-09-21 11:45:31
举报
文章被收录于专栏:MikeC's Blog

题目描述

Highway 201 is the most busy street in Rockport. Traffic cars cause a lot of hindrances to races, especially when there are a lot of them. The track which passes through this highway can be divided into n sub-tracks. You are given an array aa where a_i represents the number of traffic cars in the i -th sub-track. You define the inconvenience of the track as \sum\limits_{i=1}^{n} \sum\limits_{j=i+1}^{n} \lvert a_i-a_j\rvert , where |x| is the absolute value of x .

You can perform the following operation any (possibly zero) number of times: choose a traffic car and move it from its current sub-track to any other sub-track.

Find the minimum inconvenience you can achieve.

输入格式

The first line of input contains a single integer t ( 1\leq t\leq 10\,000) — the number of test cases.

The first line of each test case contains a single integer n ( 1\leq n\leq 2\cdot 10^5).

The second line of each test case contains n integers a_1, a_2, \ldots, a_n ( 0\leq a_i\leq 10^9).

It is guaranteed that the sum of n over all test cases does not exceed 2\cdot 10^5 .

输出格式

For each test case, print a single line containing a single integer: the minimum inconvenience you can achieve by applying the given operation any (possibly zero) number of times.

输入输出样例

输入 #1

代码语言:javascript
复制
3
3
1 2 3
4
0 1 1 0
10
8 3 6 11 5 2 1 7 10 4

输出 #1

代码语言:javascript
复制
0
4
21

说明/提示

For the first test case, you can move a car from the 3 -rd sub-track to the 1 -st sub-track to obtain 0 inconvenience.

For the second test case, moving any car won't decrease the inconvenience of the track.

分析

要求数列和不变,对数列进行任意操作,求出数列中任意两个数差值的绝对值的和的最小值。我们自然可以想到尽可能地让数值均分,均分过后的数列一定只会有 1 种或 2 种数值,作差即可得到答案。

对于作差,我们也可以进行推导优化。假设均分过后的数列有 2 种数值,那么较大数值的个数为 \sum_{i=1}^{n} a[i]\;\bmod\; n ,因为只存在 2 种数值,所以较大数值与较小数值作差的绝对值一定为 1,那么我们的答案就是较大数值的个数乘较小数值的个数即 [n\;\cdot\;(\sum_{i=1}^{n} a[i])\;\bmod\; n]-[(\sum_{i=1}^{n} a[i])\;\bmod\; n]^2

代码

代码语言:javascript
复制
#include<bits/stdc++.h>
#define int long long
using namespace std;
int t,n,a[200001];
int sum,op;
signed main(){
    scanf("%lld",&t);
    while(t--){
        scanf("%lld",&n);
        sum=0;
        for(int i=1;i<=n;i++){
            scanf("%lld",&a[i]);
            sum+=a[i];
        }
        op=sum%n;
        printf("%lld\n",(n-op)*op);
    }
}

最后修改:2021 年 07 月 19 日 07 : 11 PM

© 允许规范转载

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021 年 07 月,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目描述
  • 输入格式
  • 输出格式
  • 输入输出样例
    • 输入 #1
      • 输出 #1
      • 说明/提示
      • 分析
      • 代码
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档