打的特别自闭,特别是最后太阳穴很疼,滚去睡觉了。唯一的贡献是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
原创文章,作者:745907710,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/276760.html