HDU 3571 N-dimensional Sphere( 高斯消元+ 同余 )
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
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)
(It's guaranteed that all coordinate components of the answer are integers and there is only one solution and |Xi| <= 10^17)
#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( 高斯消元+ 同余 )的更多相关文章
- HDU.3571.N-dimensional Sphere(高斯消元 模线性方程组)
题目链接 高斯消元详解 /* $Description$ 在n维空间中给定n+1个点,求一个点使得这个点到所有点的距离都为R(R不给出).点的任一坐标|xi|<=1e17. $Solution$ ...
- BZOJ-1013 球形空间产生器sphere 高斯消元+数论推公式
1013: [JSOI2008]球形空间产生器sphere Time Limit: 1 Sec Memory Limit: 162 MB Submit: 3662 Solved: 1910 [Subm ...
- BZOJ 1013: [JSOI2008]球形空间产生器sphere 高斯消元
1013: [JSOI2008]球形空间产生器sphere Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/Judg ...
- HDU 5755 Gambler Bo(高斯消元)
[题目链接] http://acm.hdu.edu.cn/showproblem.php?pid=5755 [题目大意] 一个n*m由0,1,2组成的矩阵,每次操作可以选取一个方格,使得它加上2之后对 ...
- HDU 4818 RP problem (高斯消元, 2013年长春区域赛F题)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4818 深深地补一个坑~~~ 现场赛坑在这题了,TAT.... 今天把代码改了下,过掉了,TAT 很明显 ...
- ACM学习历程—HDU 3949 XOR(xor高斯消元)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3949 题目大意是给n个数,然后随便取几个数求xor和,求第k小的.(重复不计算) 首先想把所有xor的 ...
- 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维球体的球心坐标,以便于摧 ...
- hdu 5833 Zhu and 772002 高斯消元
Zhu and 772002 Problem Description Zhu and 772002 are both good at math. One day, Zhu wants to test ...
随机推荐
- RDD缓存
RDD的缓存 Spark速度非常快的原因之一,就是在不同操作中可以在内存中持久化或缓存数据集.当持久化某个RDD后,每一个节点都将把计算的分片结果保存在内存中,并在对此RDD或衍生出的RDD进行的其他 ...
- 【学习总结】Python-3-字符串函数-strip()方法
参考: 菜鸟教程-Python3-Python字符串-strip()方法 语法: str.strip([chars]); 参数: chars -- 移除字符串头尾指定的字符序列. 返回值: 返回移除字 ...
- Freeswitch Tutorial
I. Install Freeswitch 1) FreeSWITCH Explained https://freeswitch.org/confluence/ https://freeswitch. ...
- rabbitmq必须应答
当autoAck设置为true时,只要消息被消费者处理,不管成功与否,服务器都会删除该消息, 而当autoAck设置为false时,只有消息被处理,且反馈结果后才会删除 https://www.cnb ...
- mongodb使用简介
mongodb简介 在使用nodejs时候,需要存储一些简单json数据的情况下,很多人会推荐使用mongodb.mongodb是一个文档型数据库,在 sql 中,数据层级是:数据库(db) -> ...
- openstack创建一个虚拟机的过程
为什要用云? 一.简单的说就是对资源更加合理的分配,使用,比如硬件的数量,带宽等等这些,因为你不能机器买来不需要了再卖掉(当然也可以),带宽跟机房签合同得来一年的,中间不够了也不能加,超了也不退钱 ...
- Vue列表渲染:一个取值范围的v-for
v-for 也可以取整数.在这种情况下,它将重复多次模板. 例子 <div id="app"> <span v-for="n in 10"&g ...
- mongodb 索引分类
一. 普通索引篇 1.创建索引 创建索引:db.person.ensureIndex({"age":1}).这里我们使用了ensureIndex在age上建立了索引.“1”:表示按 ...
- bzoj 1001 原图最小割转化为对偶图最短路
题目大意: 现在小朋友们最喜欢的"喜羊羊与灰太狼",话说灰太狼抓羊不到,但抓兔子还是比较在行的, 而且现在的兔子还比较笨,它们只有两个窝,现在你做为狼王,面对下面这样一个网格的地形 ...
- 特斯拉通过GitHub发布了这些源代码,用意何在?
特斯拉多年来一直在软件社区使用开源软件而不遵守许可证. 在迈向合规性的一步中,特斯拉现在正在发布其软件的一些部分,这对特斯拉黑客和安全研究人员来说非常有用. 特斯拉是一家软件强大的公司,它一直在使用大 ...