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 ...
随机推荐
- 【JAVA】java编译错误:编码UTF8/GBK的不可映射字符
环境: win7 cmd窗口编译 javac xx.java时报错 错误显示:错误:编码GBK的不可映射字符 背景: 分析发现是中文字符所在行报错了 查阅相关资料发现,是因为编译器设置为了utf-8, ...
- MySQL对字段新增自增序列
现在有这样的场景,我们的数据库类型是MySQL,表是从其他库拿过来的,约束和索引都没迁移.现在希望增加一个自增序列. 且自增序列是从当前最大自增ID开始的,下面就是这样一个过程的演示. mysql&g ...
- DTS
一.DTS的加载过程 如果要使用Device Tree,首先用户要了解自己的硬件配置和系统运行参数,并把这些信息组织成Device Tree source file.通过DTC(Device Tr ...
- geometry_msgs的ros message 类型赋值
test_custom_particles.cpp // // Created by gary on 2019/8/27. // #include <ros/ros.h> #include ...
- 数据结构 java概况
数据结构可以分为三种结构: 线性结构: 数组:栈:队列:链表:哈希表 树结构: 二叉树,二分搜索树,AVL,红黑树,Treap,Splay,堆,Trie,线段树,K-D树,并查集,哈夫曼树 图结构 邻 ...
- python常用函数 H
heapify(iterable) 堆排序. 例子: heappop(iterable) 弹出堆排序的第一个元素,即最小值. 例子: hasattr(object,attr) 用于确定对象是否有某个属 ...
- bootz to be continued
dmesgcat /proc/interrupts cat /proc/meminfocat /proc/cpuinfo top bootz 0x10000000 0x12000000 0x11000 ...
- BZOJ5261 Rhyme
传送门 广义后缀自动机= =+ 跟ptx大爷的博客学的 戳我传送 我写的第一种 建立Trie树的写法 bfs建立SAM 为什么是bfs呢 我也不知道(GG) 经过我一番抱大腿+询问 各位大爷说的原因是 ...
- NCRE训练二
package com.fei.ncre; import java.io.RandomAccessFile; /** * 该程序的功能是将本程序代码打印输出 */ public class Java_ ...
- 设置Oracle PL/SQL时间显示格式NLS_TIMESTAMP_FORMAT
Oracle中TIMESTAMP时间的显示格式 Oracle数据库的时间字段我们通常是使用timestamp 格式,在未做设置前, 查询出来的数据类似于“27-1月 -08 12.04.35.87 ...