bzoj1013题解
【解题思路】
初看以为是二次方程组,但这些方程有相同的右值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]即是答案向量。
【参考代码】
#include <iomanip>
#include <iostream>
#define REP(I,start,end) for(int I=start;I<=end;I++)
#define PER(I,start,end) for(int I=start;I>=end;I--)
#define REPs(I,start,end,step) for(int I=start;I<=end;I+=step)
#define PERs(I,start,end,step) for(int I=start;I>=end;I-=step)
using namespace std;
template<typename T> T sqr(T n)
{
return n*n;
}
int n;
long double a[][],A[][];
int main()
{
ios::sync_with_stdio(false);
cin>>n;
REP(i,,n+)
REP(j,,n)
cin>>a[i][j];
REP(i,,n)
REP(j,,n)
{
A[i][j]=*(a[i+][j]-a[i][j]);
A[i][]+=sqr(a[i+][j])-sqr(a[i][j]);
}
REP(i,,n-)
REP(j,i+,n)
{
long double _i=A[i][i],_j=A[j][i];
REP(k,,n)
A[j][k]=A[j][k]*_i/_j-A[i][k];
}
PER(i,n,)
REP(j,,i-)
{
long double _i=A[i][i],_j=A[j][i];
REP(k,,i)
A[j][k]=A[j][k]*_i/_j-A[i][k];
}
REP(i,,n-)
cout<<setiosflags(ios::fixed)<<setprecision()<<A[i][]/A[i][i]<<' ';
cout<<setiosflags(ios::fixed)<<setprecision()<<A[n][]/A[n][n]<<endl;
return ;
}
bzoj1013题解的更多相关文章
- LG4035/BZOJ1013 「JSOI2008」球形空间产生器 高斯消元
问题描述 LG4035 BZOJ1013 题解 设答案为\((p_1,p_2,p_3,...,p_n)\) 因为是一个球体,令其半径为\(r\),则有 \[\sum_{i=1}^{n}{(a_i-p_ ...
- BZOJ1013:[JSOI2008]球形空间产生器——题解
http://www.lydsy.com/JudgeOnline/problem.php?id=1013 Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在 ...
- 题解 洛谷P4035/BZOJ1013【[JSOI2008]球形空间产生器】
题目链接在这QvQ "你要求出这个n维球体的球心坐标",这使我想到的解方程...... 先假设n=2,这是一个二维平面.设圆心的坐标为\((x,y)\),有两个坐标\((a_1,b ...
- 【BZOJ1013】球形空间产生器(高斯消元)
[BZOJ1013]球形空间产生器(高斯消元) 题面 Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球 面上n+1个点的坐标, ...
- 【BZOJ1013】【JSOI2008】球形空间产生器 高斯消元
题目描述 有一个\(n\)维空间中的球,告诉你球面上\(n+1\)个点的坐标,求球心的坐标. \(n\leq 10\) 题解 设\(a_{i,j}\)为第\(i\)个点的第\(j\)维坐标,\(i=0 ...
- 2016 华南师大ACM校赛 SCNUCPC 非官方题解
我要举报本次校赛出题人的消极出题!!! 官方题解请戳:http://3.scnuacm2015.sinaapp.com/?p=89(其实就是一堆代码没有题解) A. 树链剖分数据结构板题 题目大意:我 ...
- noip2016十连测题解
以下代码为了阅读方便,省去以下头文件: #include <iostream> #include <stdio.h> #include <math.h> #incl ...
- BZOJ-2561-最小生成树 题解(最小割)
2561: 最小生成树(题解) Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1628 Solved: 786 传送门:http://www.lyd ...
- Codeforces Round #353 (Div. 2) ABCDE 题解 python
Problems # Name A Infinite Sequence standard input/output 1 s, 256 MB x3509 B Restoring P ...
随机推荐
- Android中App可分配内存的大小(转)
转自:http://blog.csdn.net/u011506413/article/details/50965435 现在真实测试结果: 1,为了搞清楚每个应用程序在Android系统中最多可分配多 ...
- ueditor 加载文本
一. 定义一个隐藏区域,然后用js获取 // 定义 文本框 <script id="editor" type="text/plain" style=&qu ...
- C/C++ clock()
{ clock_t start = clock(); for(int i = 0; i < 1000000; i++) { static int var = 0; var++; } clock_ ...
- CSP-S2019退役记
分两次写完思路不是很清晰. 作为一名强迫症患者我选择以后再更新一些细节…… upd 真·退役,D1T1为什么都是95分算法他们AC了我挂成了70分555555555555 普及-的题目A不掉我死了55 ...
- mysql|tomcat|nginx|redis在docker中的部署
MySQL部署 拉取MySQL镜像 docker pull mysql 查看镜像 创建MySQL容器 docker run -di --name pinyougou_mysql -p 33306:33 ...
- word文档操作
1.如何把word文档修改的地方标记出来 : https://zhidao.baidu.com/question/73648149.html 2.word 的几种 视图:https://zhid ...
- webstorm使用说明
1.移动光标到的代码块的结尾处(开始处 [ ) ctrl+] 2.移动光标到的代码块的结尾处并选择 ctrl+shift+] 3.ctrl + b: 跳到变量申明处 4.多光标输入: ...
- HIve分组查询返回每组的一条记录
select a.lng,a.lat from (select row_number() over ( partition by uid,grid_id) as rnum,weighted_centr ...
- (1)Redis 基本类型
https://redis.io/ http://redisdoc.com/ 中文 一. 库 redis默认16个库,0-15.默认端口号 6379 使用某个库 测试服务器是否连通 ping // ...
- vbs 之 wscript
https://www.jb51.net/article/20919.htm '''''''''''''''''''''''''''''''''''''''''''''''''''''''''' ' ...