N-dimensional Sphere

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 668    Accepted Submission(s): 234

Problem Description
In an N-dimensional space, a sphere is defined as {(x1, x2 ... xN)| ∑(xi-Xi)^2 = R^2 (i=1,2,...,N) }. where (X1,X2…XN) is the center. You're given N + 1 points on an N-dimensional sphere and are asked to calculate the center of the sphere.
 
Input
The first line contains an integer T which is the number of test cases.
For each case there's one integer N on the first line.
Each of the N+1 following lines contains N integers x1, x2 ... xN describing the coordinate of a point on the N-dimensional sphere.
(0 <= T <= 10, 1 <= N <= 50, |xi| <= 10^17)
 
Output
For the kth case, first output a line contains “Case k:”, then output N integers on a line indicating the center of the N-dimensional sphere
(It's guaranteed that all coordinate components of the answer are integers and there is only one solution and |Xi| <= 10^17)
 
Sample Input
2
2
1 0
-1 0
0 1
3
2 2 3
0 2 3
1 3 3
1 2 4
 
Sample Output
Case 1:
0 0
Case 2:
1 2 3
 
 
 
这条题目的做法很容易想出来 。
凭借 n + 1 个点代入 n 维圆公式, 求圆心 。
然后用第 n + 1 个方程( 设下标为n )  sigma( ( Xi - Oi )^2 )  = R^2 
跟前n 个方程联立容易得到 :
  sigma( ( Xi - Oi )^2 )  =  sigma( ( Yi - Oi )^2 )  
两边都展开然后消掉Oi^2就得到
  sigma(  2*( Xi - Yi )*Oi ) = sigma(  Xi^2 - Yi^2 )  .
得到 n 个这样的 n 元一次方程之后就可以利用高斯消元解决。
 
但首先 fabs( xi ) <= 1e17 的。 大数据的话显然计算过程溢出 。
就用到  sigma( ai * xi ) = an ( % mod ) 来解决。 求得解依然唯一。
 
在高斯消元的过程中会有除法 , 用求逆来解决。
由于数据很大, 欧拉定理会溢 , 那么用扩展欧几里得就OK 。
 
然后还需要将数据加一个偏移差,把所有数据处理成正数 (相当于把整个图形平移了,最后减回来不影响结果)。
避免在取余过程中把(负数+mod)%mod弄成了正。
 
 
#include <iostream>
#include <cstdio>
#include <cstring>
#include <string>
#include <cmath>
#include <vector>
#include <queue>
#include <map>
#include <set>
#include <stack>
#include <algorithm>
using namespace std;
#define root 1,n,1
#define lson l,mid,rt<<1
#define rson mid+1,r,rt<<1|1
#define lr rt<<1
#define rr rt<<1|1
typedef long long LL;
typedef pair<int,int>pii;
#define X first
#define Y second
const int oo = 1e9+;
const double PI = acos(-1.0);
const double eps = 1e- ;
const int N = ;
#define mod 200000000000000003LL
#define dif 100000000000000000LL LL Mod(LL x) {
if (x >= mod) return x - mod;
return x;
}
LL mul(LL a, LL b) {
LL res;
for (res = ; b; b >>= ) {
if (b & )
res = Mod(res + a);
a = Mod(a + a);
}
return res;
} void e_gcd( LL a , LL b , LL &d , LL &x , LL &y ) {
if( !b ){ d = a , x = , y = ; return ; }
e_gcd( b , a%b , d , y , x );
y -= x*(a/b);
} LL inv( LL a , LL n ){
LL d,x,y ;
e_gcd(a,n,d,x,y);
return ( x % n + n ) % n ;
} LL A[N][N] , g[N][N];
int n ; void Gauss() { for( int i = ; i < n ; ++i ) {
int r = i ;
for( int j = i ; j < n ; ++j ) {
if( g[j][i] ) { r = j ; break ; }
}
if( r != i ) for( int j = ; j <= n ; ++j ) swap( g[i][j] , g[r][j] ) ; LL INV = inv( g[i][i] , mod );
for( int k = i + ; k < n ; ++k ) {
if( g[k][i] ) {
LL f = mul( g[k][i] , INV );
for( int j = i ; j <= n ; ++j ) {
g[k][j] -= mul( f , g[i][j] );
g[k][j] = ( g[k][j] % mod + mod ) % mod ;
}
}
}
}
for( int i = n - ; i >= ; --i ){
for( int j = i + ; j < n ; ++j ){
g[i][n] -= mul( g[j][n] , g[i][j] ) , g[i][n] += mod , g[i][n] %= mod ;
}
g[i][n] = mul( g[i][n] , inv( g[i][i] , mod ) );
}
} void Run() { scanf("%d",&n);
memset( g , , sizeof g );
for( int i = ; i <= n ; ++i ) {
for( int j = ; j < n ; ++j ) {
scanf("%I64d",&A[i][j]);
A[i][j] += dif ;
}
} for( int i = ; i < n ; ++i ){
for( int j = ; j < n ; ++j ){
g[i][j] = Mod( A[n][j] - A[i][j] + mod );
g[i][j] = mul( g[i][j] , ) ;
g[i][n] = Mod( g[i][n] + mul( A[n][j] , A[n][j] ) );
g[i][n] = Mod( g[i][n] - mul( A[i][j] , A[i][j] ) + mod );
}
} Gauss();
printf("%I64d",g[][n]-dif);
for( int i = ; i < n ; ++i ){
printf(" %I64d",g[i][n]-dif);
}puts("");
} int main()
{
#ifdef LOCAL
freopen("in.txt","r",stdin);
#endif // LOCAL
int cas = , _ ; scanf("%d",&_ );
while( _-- ){
printf("Case %d:\n",cas++); Run();
}
}

HDU 3571 N-dimensional Sphere( 高斯消元+ 同余 )的更多相关文章

  1. HDU.3571.N-dimensional Sphere(高斯消元 模线性方程组)

    题目链接 高斯消元详解 /* $Description$ 在n维空间中给定n+1个点,求一个点使得这个点到所有点的距离都为R(R不给出).点的任一坐标|xi|<=1e17. $Solution$ ...

  2. BZOJ-1013 球形空间产生器sphere 高斯消元+数论推公式

    1013: [JSOI2008]球形空间产生器sphere Time Limit: 1 Sec Memory Limit: 162 MB Submit: 3662 Solved: 1910 [Subm ...

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

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

  4. HDU 5755 Gambler Bo(高斯消元)

    [题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5755 [题目大意] 一个n*m由0,1,2组成的矩阵,每次操作可以选取一个方格,使得它加上2之后对 ...

  5. HDU 4818 RP problem (高斯消元, 2013年长春区域赛F题)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4818 深深地补一个坑~~~ 现场赛坑在这题了,TAT.... 今天把代码改了下,过掉了,TAT 很明显 ...

  6. ACM学习历程—HDU 3949 XOR(xor高斯消元)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3949 题目大意是给n个数,然后随便取几个数求xor和,求第k小的.(重复不计算) 首先想把所有xor的 ...

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

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

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

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

  9. hdu 5833 Zhu and 772002 高斯消元

    Zhu and 772002 Problem Description Zhu and 772002 are both good at math. One day, Zhu wants to test ...

随机推荐

  1. mySql | Error: ER_DATA_TOO_LONG: Data too long for column 'base_info' at row 1

    问题描述:执行insert语句报以下错误 原因:数据库表,该字段在设计的时候长度过小,新插入的数据过长,会提示以上错误! 解决办法:修改表中该字段的长度限定.

  2. Linux就该这么学11学习笔记

    参考链接:https://i.cnblogs.com/EditPosts.aspx?opt=1 文件传输协议 一般来讲,人们将计算机联网的首要目的就是获取资料,而文件传输是一种非常重要的获取资料的方式 ...

  3. css day2

    外观属性 color:文本颜色 用于定义文本的颜色 1.预定义的颜色值,如red.green.blue等 2.十六进制,如#FF0000.#FF6600.#29D794等.十六进制是最常用的定义颜色的 ...

  4. 开源Futter项目

    前段时间Flutter很火,所以在闲暇之余做了一个助学通的Flutter移动端应用,现在开源出来,希望对想要学习Flutter的朋友有所帮助. 我大致做个项目介绍: 学生签到系统:分java服务端提供 ...

  5. 12.整合neo4j

    neo4j 官网下载: https://neo4j.com/download-center/#community 教程: http://neo4j.com.cn/public/cypher/defau ...

  6. Delphi Win API 函数 MulDiv

    Delphi Win API 函数 MulDiv 原型:function MulDiv(nNumber, nNumerator, nDenominator: Integer): Integer; st ...

  7. 英语单词substitution

    substitution 来源——shell字符串切片 [root@centos73 ~]# echo ${$alpha:3:4} -bash: ${$alpha:3:4}: bad substitu ...

  8. springBoot01-helloworld-完成一个简单的RESTful API

    1.访问http://start.spring.io/ 2.选择构建工具Maven Project.Spring Boot版本 2.0.1,以及一些工程基本信息 ,最后点击Generate Proje ...

  9. 2017 山东一轮集训 Day2 Shadow (三维凸包点在面上投影)

    在三维坐标中,给定一个点光源,一个凸多面体,以及一个平面作为地面. 求该凸多面体在地面上阴影的面积. 这三个点共同确定了一个平面,这个平面就是地面.保证这三个点坐标互异且不共线.前三行每行三个实数,每 ...

  10. webpack对脚本和样式的处理

    一.对js处理 webpack本身支持js加载也可以用插件. 1.加载要全局使用的插件比如jquery 在页面用cdn方式引用,然后再webpack.config.js里配置.会让jquery成为全局 ...