当前位置:网站首页>2022 Nioke Multi-School Training Session 2 J Question Link with Arithmetic Progression
2022 Nioke Multi-School Training Session 2 J Question Link with Arithmetic Progression
2022-08-05 00:21:00 【Rain Sure】
题目链接
Link with Arithmetic Progression
题目大意
给定一个数组,Let's find a straight line that fits it,Minimum mean squared error is required.I believe that everyone has learned related knowledge in mathematics class or machine learning class.
题解
T a r g e t = m i n ( ∑ i = 1 n [ a 1 + ( i − 1 ) × d − a i ] 2 ) Target = min(\sum^{n}_{i = 1} [a_1 + (i - 1) \times d - a_i]^2) Target=min(i=1∑n[a1+(i−1)×d−ai]2)
This is the value we are asking for,We need to keep it minimal,We can think about it first a 1 a_1 a1求出来,很明显,随着 a 1 a_1 a1from negative infinity to positive infinity,TargetThe value first falls and then rises,也就是说 a 1 a_1 a1是一个凹函数,Therefore, we can consider using three points a 1 a_1 a1,and then considering a 1 a_1 a1确定的情况下,如何确定 d d d.
We deform the formula:
= [ a 1 + ( i − 1 ) × d ] 2 − 2 × [ a 1 + ( i − 1 ) × d ] × a i + a i 2 = [a_1 + (i - 1)\times d]^2 - 2 \times [a_1 + (i - 1) \times d] \times a_i + {a_i}^2 =[a1+(i−1)×d]2−2×[a1+(i−1)×d]×ai+ai2
然后,将带有 d d d的合并同类项.
= ( i − 1 ) 2 × d 2 + 2 × ( i − 1 ) × ( a 1 − a i ) × d + a 1 2 + a i 2 = (i - 1) ^2 \times d^2 + 2 \times (i - 1) \times (a_1 - a_i) \times d + {a_1}^2 + {a_i}^2 =(i−1)2×d2+2×(i−1)×(a1−ai)×d+a12+ai2
According to the knowledge of quadratic functions,我们可以很轻松的确定 d = − b 2 ∗ ( i − 1 ) 2 d = \frac {-b} {2 * (i - 1) ^ 2} d=2∗(i−1)2−b
然后,就可以进行计算了.
话不多说,上代码:
代码
#include<iostream>
#include<cstring>
#include <cstdio>
#include <cctype>
using namespace std;
#define int long long
#define double long double
const int maxn = 100010;
int w[maxn];
int n;
namespace GTI
{
char gc(void)
{
const int S = 1 << 16;
static char buf[S], *s = buf, *t = buf;
if (s == t) t = buf + fread(s = buf, 1, S, stdin);
if (s == t) return EOF;
return *s++;
}
int gti(void)
{
int a = 0, b = 1, c = gc();
for (; !isdigit(c); c = gc()) b ^= (c == '-');
for (; isdigit(c); c = gc()) a = a * 10 + c - '0';
return b ? a : -a;
}
}
using GTI::gti;
double check(double a1)
{
double a = 0, b = 0;
for(int i = 1; i <= n; i ++){
a += (i - 1) * (i - 1);
b += 2 * (i - 1) * (a1 - w[i]);
}
double d = - b / (2 * a);
double res = 0;
for(int i = 1; i <= n; i ++){
res += (a1 + (i - 1) * d - w[i]) * (a1 + (i - 1) * d - w[i]);
}
return res;
}
signed main()
{
int t; t = gti();
while(t --)
{
n = gti();
for(int i = 1; i <= n; i ++) w[i] = gti();
double l = -1e10, r = 1e10;
while(r - l > 1e-5) {
double len = r - l;
double mid_l = l + len / 3, mid_r = r - len / 3;
if(check(mid_l) >= check(mid_r)) l = mid_l;
else r = mid_r;
}
printf("%.10Lf\n", check(r));
}
return 0;
}
边栏推荐
- leetcode:269. 火星词典
- Three tips for you to successfully get started with 3D modeling
- gorm联表查询-实战
- 软件测试面试题:您如何看待软件过程改进?在您曾经工作过的企业中,是否有一些需要改进的东西呢?您期望的理想的测试人员的工作环境是怎样的?
- 软件测试面试题:LoadRunner 分为哪三个模块?
- tiup uninstall
- 2022牛客多校第三场 A Ancestor
- The applicable scenarios and common product types of the KT148A electronic voice chip ic solution
- 00、数组及字符串常用的 API(详细剖析)
- 刘润直播预告 | 顶级高手,如何创造财富
猜你喜欢
随机推荐
Software Testing Interview Questions: What aspects should be considered when designing test cases, i.e. what aspects should different test cases test against?
软件测试面试题:做好测试计划的关键是什么?
软件测试面试题:测试用例通常包括那些内容?
QSunSync 七牛云文件同步工具,批量上传
Getting started with 3D modeling for games, what modeling software can I choose?
Huggingface入门篇 II (QA)
KT148A voice chip ic working principle and internal architecture description of the chip
软件测试面试题:软件验收测试的合格通过准则?
Statistical words (DAY 101) Huazhong University of Science and Technology postgraduate examination questions
软件测试面试题:软件测试类型都有哪些?
MongoDB permission verification is turned on and mongoose database configuration
D - I Hate Non-integer Number (选数的计数dp
tiup telemetry
tiup status
【无标题】
软件测试面试题:手工测试与自动测试有哪些区别?
Cython
Raw and scan of gorm
【LeetCode】矩阵模拟相关题目汇总
KT6368A Bluetooth certification problem_FCC and BQB_CE_KC certification or other instructions








