专栏文章

题解:P13910 [CSPro 26] 归一化处理

P13910题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mio0ugsy
此快照首次捕获于
2025/12/02 11:31
3 个月前
此快照最后确认于
2025/12/02 11:31
3 个月前
查看原文
此题是一个较简单的模拟题,不需要任何优化技巧即可通过。

题面

可能有些新手朋友不了解 \sum 的意义,在此介绍。
例如 i=1nf(i)\sum_{i=1}^{n} f(i) 的意思就是把 ii1n1\sim n 遍历(只遍历整数),计算后面的表达式 f(i)f(i) ,总的值就是所有表达式 f(i)f(i) 值的总和,即 f(1)+f(2)++f(n)f(1)+f(2)+\cdots+f(n)

思路

此题有 aˉ\bar{a}D(a)D(a) 两个关键值,将其按照题目定义计算出来,即可逐个计算出每个 f(ai)f(a_i)

代码实现

注意题目要求输出结果与正确答案绝对误差不大于 10410^{-4} 即可通过,所以 printf 保留四位小数及以上都可以,保险起见可多保留几位。
CPP
#include<bits/stdc++.h>
#define int long long//以防万一开 long long
using namespace std;
int n;
double ave=0,D=0;//浮点类型
int a[1010];
signed main()
{
    cin>>n;
    //计算平均值 ave
    for(int i=1;i<=n;i++) cin>>a[i],ave+=a[i];
    ave/=n;
    //计算方差 D
    for(int i=1;i<=n;i++) D+=(a[i]-ave)*(a[i]-ave);//按 ∑ 从 1 到 n 累加
    D/=n;
    for(int i=1;i<=n;i++) printf("%.16lf\n",(a[i]-ave)/sqrt(D));//输出答案,此处保留 16 位小数,记得换行
    return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...