正解:高斯消元

解题报告:

链接!

原本的式子是$\sum (a_i-x_i)^2=r^2$.发现是平方式根本不可做.

考虑拆式子之后变形,就会变成$2\cdot a_1\cdot x_1+2\cdot a_2\cdot x_2+..+2\cdot a_n\cdot x_n+({x_1}^2+{x_2}^2+...+{x_n}^2)=r^2-\sum {a_i}^2$

然后把这个$({x_1}^2+{x_2}^2+...+{x_n}^2)$看作一个新的未知数就好

好巧不巧的是它又刚好给的n+1个式子你就可以用它求出我们的n+1个未知数辣!(巧个屁,明明就是被出题人安排得明明白白

然后就放代码!完美结束$yep$!

  1. #include<bits/stdc++.h>
  2. using namespace std;
  3. double a[][],inf=1e-,t[][];int w[];bool pd[];
  4. long long read()
  5. {
  6. char ch=getchar();long long x=;bool y=;
  7. while((ch!='-') && (ch>'' || ch<''))ch=getchar();
  8. if(ch=='-')y=,ch=getchar();
  9. while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=getchar();
  10. return y?x:-x;
  11. }
  12. void gsxy(int n)
  13. {
  14. for(int i=;i<=n;i++)
  15. {
  16. double mx=;int p=;
  17. for(int j=;j<=n;j++)if(fabs(a[j][i])-inf>mx && pd[j]==)mx=fabs(a[j][i]),p=j;
  18. w[i]=p;
  19. pd[p]=;
  20. for(int j=;j<=n;j++)
  21. if(j!=p){double t=(double)a[j][i]*1.0000/a[p][i];for(int k=;k<=n+;k++)a[j][k]-=(double)t*a[p][k];}
  22. }
  23. for(int i=;i<n;i++)printf("%.3lf ",a[w[i]][n+]*1.00000/a[w[i]][i]);
  24. }
  25. int main()
  26. {
  27. int n=read();
  28. for(int i=;i<=n+;i++)
  29. {
  30. for(int j=;j<=n;j++){scanf("%lf",&a[i][j]);a[i][n+]-=a[i][j]*a[i][j],a[i][j]*=-2.0;}
  31. a[i][n+]=;
  32. }
  33. gsxy(n+);
  34. return ;
  35. }

这儿是代码

洛谷P4035 球形空间产生器 [JSOI2008] 高斯消元的更多相关文章

  1. 【Luogu】P4035球形空间产生器(高斯消元)

    题目链接 水比题,把圆方程展开减一下把平方都减掉半径的平方也减掉,高斯消元即可. 然后我只输出两位小数,爆了两次零.我好菜啊. #include<cstdio> #include<c ...

  2. 【BZOJ1013】球形空间产生器(高斯消元)

    [BZOJ1013]球形空间产生器(高斯消元) 题面 Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球 面上n+1个点的坐标, ...

  3. 洛谷P4035 [JSOI2008]球形空间产生器(高斯消元)

    洛谷题目传送门 球啊球 @xzz_233 qaq 高斯消元模板题,关键在于将已知条件转化为方程组. 可以发现题目要求的未知量有\(n\)个,题目却给了我们\(n+1\)个点的坐标,这其中必有玄机. 由 ...

  4. BZOJ 1013: [JSOI2008]球形空间产生器sphere 高斯消元

    1013: [JSOI2008]球形空间产生器sphere Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/Judg ...

  5. [JSOI2008]球形空间产生器 (高斯消元)

    [JSOI2008]球形空间产生器 \(solution:\) 非常明显的一道高斯消元.给了你n+1个球上的位置,我们知道球上任何一点到球心的距离是相等,所以我们 可以利用这一个性质.我们用n+1个球 ...

  6. lydsy1013: [JSOI2008]球形空间产生器sphere 高斯消元

    题链:http://www.lydsy.com/JudgeOnline/problem.php?id=1013 1013: [JSOI2008]球形空间产生器sphere 时间限制: 1 Sec  内 ...

  7. [bzoj1013][JSOI2008][球形空间产生器sphere] (高斯消元)

    Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球 面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧 ...

  8. 【BZOJ 1013】【JSOI2008】球形空间产生器sphere 高斯消元基础题

    最基础的高斯消元了,然而我把j打成i连WA连跪,考场上再犯这种错误就真的得滚粗了. #include<cmath> #include<cstdio> #include<c ...

  9. 【BZOJ1013】[JSOI2008] 球形空间产生器(高斯消元)

    点此看题面 大致题意: 给定一个\(n\)维球体上的\(n+1\)个点,请你求出这个球体的圆心的位置. 列出方程 这一看就是一道解方程题. 我们可以设这个球体的圆心的位置为\((x_1,x_2,..x ...

随机推荐

  1. fork(), waitpid()

    NAME fork - create a child process SYNOPSIS #include <unistd.h> pid_t fork(void); RETURN VALUE ...

  2. MongoDB(三)-- 执行JS、界面工具

    一.执行Js脚本 1.开启mongod服务 2.连接mongodb客户端,./mongo --host 192.168.80.128 --port 27017 3.创建数据库:use testdb1 ...

  3. RESTFul basic introduction

    http://www.ruanyifeng.com/blog/2011/09/restful.html

  4. 安装ubuntu后,你的屏幕尺寸太小,无法设置,该怎么解决

    安装完虚拟机之后,你的Ubuntu可能会在尺寸很小,(这种情况可能有,可能没有) 想要点击设置,选中Display里的分辨率下拉框,但是却因为这个窗口太大,无法点击apply按钮.悲剧啦!!! Ctr ...

  5. PHP 图片 平均分割

    $filename = 'D://WWW/1.jpg'; $p = 5; // Get new sizes list($width, $height) = getimagesize($filename ...

  6. PHP curl登录 跳过验证码

    <?php switch($_GET['do']){ case 'vc': $cookieFile = "./test.tmp"; $url = 'http://localh ...

  7. window下遍历并修改文件

    今天需要写一个遍历文件夹下的所有文件,试了试以前的方法竟然报错了.重新改了一下. #include <iostream> #include <stdlib.h> #includ ...

  8. thinkphp5.0 实现图片验证效果且能点击图片刷新图片

    思路与文件上传相同,只是验证码一个方法: <img src="{:captcha_src()}" /> 后台文件:app\ceshi\yam <?php name ...

  9. canvas - drawImage()方法绘制图片不显示的问题

    canvas有个很强大的api是drawImage()(w3c): 他的主要功能就是绘制图片.视频,甚至其他画布等.   问题: 慕名赶来,却一脚踩空,低头一看,地上一个大坑. 事情是这样的,在我看完 ...

  10. sencha touch 实现安卓toast效果(2013-9-26)

    如图中效果,代码很简单.就是利用st的loadmask来实现,可以看看api实现其他效果. /*添加消息提示组件*/ masked: { xtype: 'loadmask', cls: 'messag ...