2022年牛客多校第2场 J . Link with Arithmetic Progression (三分+枚举)

简介: 2022年牛客多校第2场 J . Link with Arithmetic Progression (三分+枚举)

题意

给一个序列,对于其中的元素可以改变为任意值,花费为差值的平方,问将其改编为等差序列的最小花费

思路

假设之前的序列为a1,a2,a3……

修改后的序列为b1,b2,b3……

首项为b1,公差为d

差值ci=ai-bi

bi=b1+(i-1)d

答案就是c1c1+c2c2+……=

(a1-(b1+(i-1)d))^2+ (a2-(b1+(i-1)d))^2+……

然后化简出来发现把公差d当作未知数得到二元一次函数

三分d来缩小范围 check的时候计算代价

知道d以后

ci=ai-bi=ai-(b1+(i-1)d)

ci+b1都是未知的,放到一侧

ci+b1=ai-(i-1)d=di

c1c1+c2c2+c3c3+……

=(d1-b1)^2+ (d2-b1)^ 2+(d3-b1)^2+……

=nb1b1-2(d1+d2+d3+……)b1+(d1 * d1+d2 * d2+d3 * d3+……)

b1是未知数

相当于ax^2+by+c求极值,当x=-b/2a时取得极值

b1=(-2(d1+d2+d3+……))/(-2n)=(d1+d2+d3+……)/n

然后在计算ci就行了

ci=di-b1

代码

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+10;
long double a[maxn];
long double b[maxn];
long double eps=1e-10;
int n;
long double check(long double d){
  long double res=0,sum=0;
  for(int i=1;i<=n;i++){
    b[i]=(a[i]-(i-1)*d);
    sum=sum+b[i];
  }
  sum/=n;
  for(int i=1;i<=n;i++){
    res=res+(b[i]-sum)*(b[i]-sum);
  }
  return res;
}
int main() {
  int _;scanf("%d",&_);
  while(_--){
    scanf("%d",&n);
    for(int i=1;i<=n;i++) scanf("%Lf",&a[i]); 
    long double l=-1e10,r=1e10;
    while(r-l>eps){
      long double mid1=l+(r-l)/3.0,mid2=r-(r-l)/3.0;
      if(check(mid1)>check(mid2)) l=mid1;
      else r=mid2;
      //cout<<_<<" "<<l<<" "<<r<<endl;
    }
    printf("%.10Lf\n",check(l));
  }
  return 0;
}


目录
相关文章
|
10月前
|
机器学习/深度学习
UPC - 2022春混合个人训练赛第五场 D Seahorse Shoes(贪心+模拟)
UPC - 2022春混合个人训练赛第五场 D Seahorse Shoes(贪心+模拟)
59 0
|
9月前
2022天梯赛三月冲刺——PAT (Advanced Level)1013 Battle Over Cities (并查集找连通块)
2022天梯赛三月冲刺——PAT (Advanced Level)1013 Battle Over Cities (并查集找连通块)
52 0
蓝桥杯2020年第十一届JavaB组真题题目+解析+代码+答案:4.分配口罩
蓝桥杯2020年第十一届JavaB组真题题目+解析+代码+答案:4.分配口罩
118 0
|
缓存 Java 测试技术
蓝桥杯2019年第十届JavaB组真题题目+解析+代码+答案:7.外卖店优先级
蓝桥杯2019年第十届JavaB组真题题目+解析+代码+答案:7.外卖店优先级
124 0
蓝桥杯2019年第十届JavaB组真题题目+解析+代码+答案:7.外卖店优先级
|
存储 算法 调度
【CCCC】PAT : 团体程序设计天梯赛-练习集 L2 答案,题解,附代码
【CCCC】PAT : 团体程序设计天梯赛-练习集 L2 答案,题解,附代码
355 0
【CCCC】L2-029 特立独行的幸福 (25分),模拟题,set用法
【CCCC】L2-029 特立独行的幸福 (25分),模拟题,set用法
136 0
【CCCC】PAT : 团体程序设计天梯赛-练习集 L3 答案(01-23)
【CCCC】PAT : 团体程序设计天梯赛-练习集 L3 答案(01-23)
95 0
|
人工智能
【CCCC】PAT : 团体程序设计天梯赛-练习集 L1 答案
【CCCC】PAT : 团体程序设计天梯赛-练习集 L1 答案
287 0
|
人工智能 BI
upc-2021个人训练赛第27场 D: Values(思维+并查集)
upc-2021个人训练赛第27场 D: Values(思维+并查集)
65 0
2021牛客国庆集训派对day1E Removal(dp 去重)
2021牛客国庆集训派对day1E Removal(dp 去重)
58 0
http://www.vxiaotou.com