洛谷P4035 球形空间产生器 [JSOI2008] 高斯消元
正解:高斯消元
解题报告:
原本的式子是$\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$!
#include<bits/stdc++.h>
using namespace std;
double a[][],inf=1e-,t[][];int w[];bool pd[];
long long read()
{
char ch=getchar();long long x=;bool y=;
while((ch!='-') && (ch>'' || ch<''))ch=getchar();
if(ch=='-')y=,ch=getchar();
while(ch>='' && ch<='')x=(x<<)+(x<<)+(ch^''),ch=getchar();
return y?x:-x;
}
void gsxy(int n)
{
for(int i=;i<=n;i++)
{
double mx=;int p=;
for(int j=;j<=n;j++)if(fabs(a[j][i])-inf>mx && pd[j]==)mx=fabs(a[j][i]),p=j;
w[i]=p;
pd[p]=;
for(int j=;j<=n;j++)
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];}
}
for(int i=;i<n;i++)printf("%.3lf ",a[w[i]][n+]*1.00000/a[w[i]][i]);
}
int main()
{
int n=read();
for(int i=;i<=n+;i++)
{
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;}
a[i][n+]=;
}
gsxy(n+);
return ;
}
这儿是代码
洛谷P4035 球形空间产生器 [JSOI2008] 高斯消元的更多相关文章
- 【Luogu】P4035球形空间产生器(高斯消元)
题目链接 水比题,把圆方程展开减一下把平方都减掉半径的平方也减掉,高斯消元即可. 然后我只输出两位小数,爆了两次零.我好菜啊. #include<cstdio> #include<c ...
- 【BZOJ1013】球形空间产生器(高斯消元)
[BZOJ1013]球形空间产生器(高斯消元) 题面 Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球 面上n+1个点的坐标, ...
- 洛谷P4035 [JSOI2008]球形空间产生器(高斯消元)
洛谷题目传送门 球啊球 @xzz_233 qaq 高斯消元模板题,关键在于将已知条件转化为方程组. 可以发现题目要求的未知量有\(n\)个,题目却给了我们\(n+1\)个点的坐标,这其中必有玄机. 由 ...
- BZOJ 1013: [JSOI2008]球形空间产生器sphere 高斯消元
1013: [JSOI2008]球形空间产生器sphere Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/Judg ...
- [JSOI2008]球形空间产生器 (高斯消元)
[JSOI2008]球形空间产生器 \(solution:\) 非常明显的一道高斯消元.给了你n+1个球上的位置,我们知道球上任何一点到球心的距离是相等,所以我们 可以利用这一个性质.我们用n+1个球 ...
- lydsy1013: [JSOI2008]球形空间产生器sphere 高斯消元
题链:http://www.lydsy.com/JudgeOnline/problem.php?id=1013 1013: [JSOI2008]球形空间产生器sphere 时间限制: 1 Sec 内 ...
- [bzoj1013][JSOI2008][球形空间产生器sphere] (高斯消元)
Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球 面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧 ...
- 【BZOJ 1013】【JSOI2008】球形空间产生器sphere 高斯消元基础题
最基础的高斯消元了,然而我把j打成i连WA连跪,考场上再犯这种错误就真的得滚粗了. #include<cmath> #include<cstdio> #include<c ...
- 【BZOJ1013】[JSOI2008] 球形空间产生器(高斯消元)
点此看题面 大致题意: 给定一个\(n\)维球体上的\(n+1\)个点,请你求出这个球体的圆心的位置. 列出方程 这一看就是一道解方程题. 我们可以设这个球体的圆心的位置为\((x_1,x_2,..x ...
随机推荐
- material mem
http://blog.csdn.net/caihaijiang/article/details/5903133 http://akunamotata.iteye.com/blog/1625804 刷 ...
- Twitter 高并发高可用架构
解决 Twitter的“问题”就像玩玩具一样,这是一个很有趣的扩展性比喻.每个人都觉得 Twitter很简单,一个菜鸟架构师随便摆弄一下个可伸缩的 Twitter就有了,就这么简单.然而事实不是这样, ...
- mybatis 之resultType="Map"
Map map = new HashMap(); map.put("productTypeID", productTypeId); List<HashMap> prod ...
- python下安装Scikit-learn
安装SK-Learn需要依赖的Python安装包有: Python (>= 2.6), NumPy (>= 1.3), SciPy (>= 0.7), 下载python的各种包的地址 ...
- Simple Mail Transfer Protocol --- SMTP协议
https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol Simple Mail Transfer Protocol
- 从零开始学习Hadoop--第4章 序列化(转载)
作者对序列化的描述浅显易懂!(https://www.douban.com/note/313096752/) 1. 序列化从头说 在面向对象程序设计中,类是个很重要的概念.所谓“类”,可以将它想像成建 ...
- Doxygen生成C++中文文档配置注意事项
打开对应的Doxyfile,修改如下: 1.OUTPUT_LANGUAGE = Chinese. 2.INPUT_ENCODING = GB2312.
- java中调用操作系统的命令
java.lang.Runtime类提供了exec() 方法来执行操作系统的命令. 使用静态的Runtime.getRuntime()方法可以获得当前的java应用程序对应的Runtime类的实例 R ...
- python pytest测试框架介绍四----pytest-html插件html带错误截图及失败重测机制
一.html报告错误截图 这次介绍pytest第三方插件pytest-html 这里不介绍怎么使用,因为怎么使用网上已经很多了,这里给个地址给大家参考,pytest-html生成html报告 今天在这 ...
- 用js内置对象XMLHttpRequest 来用ajax
步骤: /* 用XMLHTTPRequest来进行ajax异步数据交交互*/ 主要有几个步骤: //1.创建XMLHTTPRequest对象 //最复杂的一步 if (window.XMLHttpRe ...