2022牛客暑期多校訓練營2

打的特別自閉,特別是最後太陽穴很疼,滾去睡覺了。唯一的貢獻是J題。

ABCDEFGHIJKL

 

J題一眼看去就是最小二乘法,百度找了個公式套上去過了。

 

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll read()
{
    ll x;scanf("%lld",&x);return x;
}

double ans=0;
ll sumx,sumy,sumxy,sumxx;
ll n,y[1000010];
void work()
{
    sumx=sumy=sumxy=sumxx=0;
    ans=0;
    n=read();
    for(int i=1;i<=n;i++)
    {

        y[i]=read();
        sumy+=y[i];
        sumxy+=i*y[i];
        sumx+=i;
        sumxx+=1ll*i*i;
    }
    double a,b;

    b=(sumxy-sumx*1.0*sumy/n)/(sumxx-sumx*1.0*sumx/n);
    a=sumy*1.0/n-b*sumx/n;
    for(int i=1;i<=n;i++)
        ans=ans+pow(y[i]-b*i-a,2);
    printf("%.10lf\n",ans);


}
int main()
{
    for(int t=read();t;t--)
        work();
}
J

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章