BOJ 442. 平方的平均值

来源:互联网 发布:计算机java编程入门 编辑:程序博客网 时间:2024/05/01 13:19

题意:给出一堆数,求出其子集,使平方和的平均值最小

思路:如果按照绝对值从小到大排序,可以证明如果多加一个元素,会使平均值增大,随意最小的比值就是第一个元素的平方。

坑:有负数,要对负数取绝对值。

代码如下:

#include <cstdio>#include <algorithm>#include <cstdlib>using namespace std; template<class T>inline bool read(T &n){    T signal = 1, x = 0;    char ch = getchar();    while((ch < '0' || ch >'9') && ch != EOF && ch != '-')        ch = getchar();    if(ch == EOF)        return false;    if(ch == '-')        signal = -1, ch = getchar();    while(ch >= '0' && ch <= '9'){        x *= 10;        x += ch - '0';        ch = getchar();    }    n = signal * x;    return true;} const int MAX = 101000;long long  a[MAX]; int main(void){    int n;    while(read(n)){        for(int i = 0 ; i < n ; ++i)            read(a[i]),a[i] = abs(a[i]);        sort(a,a+n);        printf("%lld\n",a[0] * a[0]);    }    return 0;}

0 0
原创粉丝点击