博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BZOJ 1013: [JSOI2008]球形空间产生器sphere
阅读量:4964 次
发布时间:2019-06-12

本文共 1337 字,大约阅读时间需要 4 分钟。

二次联通门 : 

 

 

 

 

/*    BZOJ 1013: [JSOI2008]球形空间产生器sphere    高斯消元    QAQ SB的我也能终于能秒题了啊    设球心的坐标为(x,y,z...)    那么就可以列n+1个方程,化化式子高斯消元即可*/#include 
#include
#include
#define rg register#define Max 50typedef double flo; flo v[Max][Max], s[Max];inline flo P (flo x) { return x * x; }inline void swap (flo &a, flo &b) { flo c = a; a = b, b = c; }int main (int argc, char *argv[]){ int N, p; scanf ("%d", &N); rg int i, j, k; flo x; for (i = 1; i <= N; ++ i) scanf ("%lf", &s[i]); for (i = 1; i <= N; ++ i) for (j = 1; j <= N; ++ j) scanf ("%lf", &x), v[i][j] = (x - s[j]) * 2.0, v[i][N + 1] += P (x) - P (s[j]); memset (s, 0, sizeof s); for (i = 1; i <= N; ++ i) { for (p = i, j = i + 1; j <= N; ++ j) if (v[j][i] > v[p][i]) p = i; if (p != i) for (j = i; j <= N + 1; ++ j) swap (v[p][j], v[i][j]); for (j = i + 1; j <= N; ++ j) for (k = i + 1, x = v[i][i] / v[j][i]; k <= N + 1; ++ k) v[j][k] = v[i][k] - x * v[j][k]; } for (i = N; i >= 1; -- i) { for (j = i + 1; j <= N; ++ j) v[i][N + 1] -= s[j] * v[i][j]; s[i] = v[i][N + 1] / v[i][i]; } for (i = 1; i < N; ++ i) printf ("%.3lf ", s[i]); printf ("%.3lf", s[i]); return 0;}

 

转载于:https://www.cnblogs.com/ZlycerQan/p/7562496.html

你可能感兴趣的文章
动态方法决议 和 消息转发
查看>>
js 基础拓展
查看>>
C#生成随机数
查看>>
Android应用程序与SurfaceFlinger服务的连接过程分析
查看>>
Java回顾之多线程
查看>>
机电行业如何进行信息化建设
查看>>
9、总线
查看>>
Git 笔记 - section 1
查看>>
2018 Multi-University Training Contest 10 - TeaTree
查看>>
2018 Multi-University Training Contest 10 - Count
查看>>
HDU6203 ping ping ping
查看>>
《人人都是产品经理》书籍目录
查看>>
如何在git bash中运行mysql
查看>>
OO第三阶段总结
查看>>
构建之法阅读笔记02
查看>>
DataTable和 DataRow的 区别与联系
查看>>
检索COM 类工厂中CLSID 为 {00024500-0000-0000-C000-000000000046}的组件时失败
查看>>
mysql数据库中数据类型
查看>>
Fireworks基本使用
查看>>
两台电脑间的消息传输
查看>>