bzoj1013题解

摘要:
乍一看,它被认为是一个二次方程组,但这些方程具有相同的正确值r2,因此可以将其转换为线性方程组,高斯消去法就足够了。简化过程:假设第i个方程和第j个方程是同时的,得到∑2=∑2∑=∑∑=2*∑∑a[0,k]=∑/2为同时方程选择n个线性独立区间(i,j),a[0]为答案向量。

【解题思路】

  初看以为是二次方程组,但这些方程有相同的右值r2,于是可以化为一次方程组,高斯消元即可。复杂度O(n3)。

  化简过程:

假设第i个方程和第j个方程联立,得:

   ∑(a[i,k]-a[0,k])2=∑(a[j,k]-a[0,k])2

<=>∑(a[i,k]2+a[0,k]2-2*a[i,k]*a[0,k])=∑(a[j,k]2+a[0,k]2-2*a[j,k]*a[0,k])

<=>∑(a[i,k]2-a[j,k]2)=2*∑(a[0,k]*(a[i,k]-a[j,k]))

<=>∑(a[i,k]-a[j,k])a[0,k]=∑(a[i,k]2-a[j,k]2)/2

选取n个线性无关的区间(i,j)联立方程组(我选的是i和i+1),a[0]即是答案向量。

【参考代码】

bzoj1013题解第1张bzoj1013题解第2张
 1 #include <iomanip>
 2 #include <iostream>
 3 #define REP(I,start,end) for(int I=start;I<=end;I++)
 4 #define PER(I,start,end) for(int I=start;I>=end;I--)
 5 #define REPs(I,start,end,step) for(int I=start;I<=end;I+=step)
 6 #define PERs(I,start,end,step) for(int I=start;I>=end;I-=step)
 7 using namespace std;
 8 template<typename T> T sqr(T n)
 9 {
10     return n*n;
11 }
12 int n;
13 long double a[20][20],A[20][20];
14 int main()
15 {
16     ios::sync_with_stdio(false);
17     cin>>n;
18     REP(i,1,n+1)
19         REP(j,1,n)
20             cin>>a[i][j];
21     REP(i,1,n)
22         REP(j,1,n)
23         {
24             A[i][j]=2*(a[i+1][j]-a[i][j]);
25             A[i][0]+=sqr(a[i+1][j])-sqr(a[i][j]);
26         }
27     REP(i,1,n-1)
28         REP(j,i+1,n)
29         {
30             long double _i=A[i][i],_j=A[j][i];
31             REP(k,0,n)
32                 A[j][k]=A[j][k]*_i/_j-A[i][k];
33         }
34     PER(i,n,1)
35         REP(j,1,i-1)
36         {
37             long double _i=A[i][i],_j=A[j][i];
38             REP(k,0,i)
39                 A[j][k]=A[j][k]*_i/_j-A[i][k];
40         }
41     REP(i,1,n-1)
42         cout<<setiosflags(ios::fixed)<<setprecision(3)<<A[i][0]/A[i][i]<<' ';
43     cout<<setiosflags(ios::fixed)<<setprecision(3)<<A[n][0]/A[n][n]<<endl;
44     return 0;
45 }
View Code

免责声明:文章转载自《bzoj1013题解》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇起点字体Linux 修改时区和时间下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

centos安装、卸载openssh

1.卸载openssh并执行rpm-qaopenssh*以检查是否已安装。...

Cesium快速上手10-Viewer Entities组合

src=Box.html&label=Geometriesimage.pngbox就是立方体cylinder是圆锥圆柱varviewer=newCesium.Viewer;varblueBox=viewer.entities.add;varredBox=viewer.entities.add;varoutlineOnly=viewer.entitie...

layui 学习笔记(四) 复杂表头前台Excel导出

merges':mergeConf,'!cols':colConf,'!rows‘:rowConf}});}@...

SpringBoot工程通过Maven引入自定义Jar包

A工程为:common工程打成jar包:common-0.0.1-SNAPSHOT.jar注意:A工程打包时要使用maven的插件进行打包,不然会打成SpringBoot的Jar包,无法使用。--字符集编码--˃打包时跳过测试配置1.8˂!...

海康SDK编程指南(C#二次开发版本)

海康SDK编程指南目前使用的海康SDK包括IPC_SDK,Plat_SDK(平台),其中两套SDK都需单独调用海康播放库PlayCtrl.dll来解码视频流,返回视频信息和角度信息。本文仅对视频监控常用功能的使用进行说明,其它未实现功能请参看设备网络SDK使用手册和播放库编程指南V7.2。IPC_SDK编程指南(一)SDK的引用由于IPC_SDK没有SDK安...

浅析前端常见文件下载的9种场景:Blob基础知识/组成/Blob URL、a标签下载、showSaveFilePicker API下载(兼容性差)、FileSaver.js库下载、Zip下载(JSZip库)、附件形式下载(设置Content-Disposition)、base64格式下载(需转为blob)、分块传输下载、HTTP范围请求下载、大文件分块并行下载

它主要涉及九种文件下载场景。在浏览器端文件下载场景中,JavaScript中的blob类型对象表示一个不可变的原始数据类文件对象。在JavaScript中,您可以通过blob构造函数创建blob对象,blob构造函数表示要放入blob的数组内容的MIME类型。行终止符将更改为适合主机操作系统文件系统的新行字符,允许Blob和file对象用作图像的URL源、下...