题解 AT4494 【Thumbnail】

Zirnc

2020-02-23 10:37:04

Solution

[ChungZH's blog](https://chungzh.cn) · [ChungZH's portfolio](https://chungzh.cc) > Niwango-kun 是 Dwango Co.,Ltd. 的员工。 有一天,他被要求从用户提交的视频中生成缩略图。 要生成缩略图,他需要根据以下过程选择视频帧: > - 获取整数 $N$ 和 $N$ 个整数 $a_0,a_1,...,a_{N-1}$ 作为输入。$N$ 表示视频的帧数,每个 $a_i$ 表示视频的第 $i$ 帧的表示 > - 选择第 $t$ 个帧,其表示 $a_t$ 最接近所有帧表示的平均值。 > > 如果有多个这样的帧,请选择索引最小的帧。 > > 找到他应选择生成缩略图的帧的索引 $t$。 简单地说就是求最接近 $a$ 数组平均值的 $a_t$ 的 $t$。 我们先求出它们的平均数,然后遍历 $a$ 数组,找出最接近平均值的那个数的下标即可。时间复杂度应该是 $O(N)$。 ```cpp #include <algorithm> #include <cstdio> #include <cstring> #include <iostream> using namespace std; double ave; int main() { int n; int a[103]; scanf("%d", &n); for (int i = 0; i < n; i++) { scanf("%d", &a[i]); ave += a[i]; } ave /= n; int mini = 0; for (int i = 1; i < n; i++) { if (abs(a[i] - ave) < abs(a[mini] - ave)) mini = i; } cout << mini << endl; return 0; } ```