hihocoder 1627

The 2017 ACM-ICPC Asia Beijing Regional Contest 北京区域赛 B、K-Dimensional Foil

题意

给定N个点的前3维左边,和他们的欧几里得距离,求至少多少维,才能满足这个距离。

题解

施密特正交化可证明如果有解则存在下三角矩阵的解。距离平方和先减去前3维的距离平方和,这样就相当于去掉了3维。然后依次考虑每个点,看当前维度能不能满足答案,不能则加一维,再根据距离确定新加一维的值。

代码

#include <bits/stdc++.h>
using namespace std;
#define mem(a,b) memset(a,b,sizeof(a))
#define rep(i,l,r) for(int i=l,ed=r;i<ed;++i)
#define db(x) cout<< #x <<"="<<(x)<<endl
#define sqr(x) ((x)*(x))typedef long long ll;
typedef long double dd;
const dd EPS=1e-10;
const int N=110;
int n,t;
dd a[N][N];//position of i_th point in j_th dimension
dd d[N][N];//remain distance between i_th and j_th point
int num[N];//k_th dimension first appears on num[k]_th point
dd calc(int i,int j,int dim){//distance between j_th point and i_th point (dimension 0~dim)dd sum=0;rep(k,0,dim+1)sum+=sqr(a[j][k]-a[i][k]);return sum;
}
bool solve(){cin>>n;rep(i,0,n)rep(j,0,3)cin>>a[i][j];int flag=0;rep(i,0,n)rep(j,i+1,n){cin>>d[i][j];rep(k,0,3)d[i][j]-=sqr(a[i][k]-a[j][k]);if(d[i][j]<-EPS){flag=1;}d[j][i]=d[i][j];}if(flag)return 0;mem(a,0);mem(num,0);int k=0;rep(i,1,n){dd dis0=d[i][0];rep(j,0,k){if(a[num[j]][j]>EPS)a[i][j]=(calc(i,num[j],k)-calc(i,0,k)+d[i][0]-d[i][num[j]])/2./a[num[j]][j];dis0-=sqr(a[i][j]);if(dis0<-EPS)return 0;}if(dis0>EPS){a[num[k]=i][k]=sqrt(dis0);k++;}rep(j,0,i)if(fabs(calc(i,j,k)-d[i][j])>EPS)return 0;}
//  rep(i,0,n)
//  rep(j,0,k){
//      cout<<a[i][j]<<(" \n"[j==k-1]);
//  }cout<<k+3<<endl;return 1;
}
int main(){ios::sync_with_stdio(false);cin>>t;while(t--){if(!solve())cout<<"Goodbye World!"<<endl;}return 0;
}

【hihocoder 1628】K-Dimensional Foil(线性代数)相关推荐

  1. K-Dimensional Foil HihoCoder - 1628 线性代数 解方程

    题目大意: 给你n艘宇宙飞船的前三维坐标,给你这些飞船之间的距离,问在至少多少维的空间里才能使这些飞船之间的距离都等于所给的距离.如果在大于等于3维的坐标下不能满足就输出"Goodbye W ...

  2. KD tree (K dimensional tree)多维空间搜索 近邻

    kd树(k-dimensional树的简称),是一种分割k维数据空间的数据结构.主要应用于多维空间关键数据的搜索(如:范围搜索和最近邻搜索).

  3. 机器学习与高维信息检索 - Note 4 - 主成分分析及其现代解释(Principal Component Analysis, PCA)及相关实例

    主成分分析及其现代解释 4. 主成分分析及其现代解释 Principal Component Analysis and Its Modern Interpretations 4.1 几何学解释 The ...

  4. 只要掌握这三组公式,便可以在AI学习中如鱼得水了

    本文摘录自 百度AI 新手学习必备数学知识 ,为了便于查找和学习.主要包括有微积分.线性代数.概率与数理统计. 数学基础知识 数据科学需要一定的数学基础,但仅仅做应用的话,如果时间不多,不用学太深,了 ...

  5. c executable和c library_双功能超薄Fe-Nx-C单原子催化剂用于同时制备乙烯和芳基氯化物...

    原标题:双功能超薄Fe-Nx-C单原子催化剂用于同时制备乙烯和芳基氯化物 ▲第一作者:甘国强博士:通讯作者:李新勇教授: 通讯单位:大连理工大学 论文DOI: 全文速览 大连理工大学李新勇教授课题组长 ...

  6. 点云网络的论文理解(七)-Frustum PointNets for 3D Object Detection from RGB-D Data

    名词解释 RGB:就是彩色图像. RGB-D:就是彩色图像外加一个深度,这个深度就是摄像头到那个东西的距离. 单目RGB-D:就是一个摄像头采集RGB-D数据 双目RGB-D:就是两个摄像头一起采集R ...

  7. 算法分析中递推式的一般代数解法

    算法分析中经常遇到需要求解递推式的情况,即将递推式改写为等价的封闭形式.例如汉诺塔问题的时间复杂度递推形式为T(n)=2T(n−1)+1(n≥1)T(n)=2T(n−1)+1(n≥1),可以解出封闭形 ...

  8. [Machine Learning] logistic函数和softmax函数

    简单总结一下机器学习最常见的两个函数,一个是logistic函数,另一个是softmax函数,若有不足之处,希望大家可以帮忙指正.本文首先分别介绍logistic函数和softmax函数的定义和应用, ...

  9. 零基础实践深度学习之数学基础

    零基础实践深度学习之数学基础 深度学习常用数学知识 数学基础知识 高等数学 线性代数 行列式 矩阵 向量 线性方程组 矩阵的特征值和特征向量 二次型 概率论和数理统计 随机事件和概率 随机变量及其概率 ...

最新文章

  1. 从源码分析DEARGUI之让怪物随机动起来
  2. 老牌医药收割AI红利:先投个15亿美元抢中国人才
  3. pyqt5动态添加按钮
  4. 64位oracle客户端_开发小记-golang连接Oracle数据库配置
  5. 野比的示波器案例(Winfrom用户控件)
  6. hs_err_pid
  7. Mockito –带有注释和静态方法的额外接口
  8. java算术运算符的分类_6.Java算术运算符
  9. java6打印机不能用_高分求解:java中调用的打印机在什么情况下不可用?
  10. BootStrap笔记-文字排版
  11. cocos2d-x-3.x 配置(1)win环境搭建
  12. Quartz学习(一)
  13. 中国(龙港)首届 “港为人先”全球创新创业大赛
  14. python怎么关闭浏览器_python selenium 对浏览器标签页进行关闭和切换的方法
  15. 二手房数据分析预测系统
  16. python爬取app数据_如何进行手机APP的数据爬取?
  17. kali linux 如何升级,如何正确更新和升级您的Kali Linux
  18. 如何通俗的理解beam search?
  19. UI设计师需要学习哪些知识?UI设计零基础怎么入门?
  20. 用MyEclipse开发第一个Struts程序

热门文章

  1. 一些markdown的操作
  2. 【数据结构】一元稀疏多项式计算器
  3. 船长的AppFuse2.0学习进程
  4. 高速CMOS光耦合器在工业现场总线网络中的应用
  5. uni-app tabbar页面传参
  6. 祭祀组成计算机CPU的两大部件是什么,组成cpu的两大部件是什么和什么
  7. linux中uniq的用法,uniq命令的用法
  8. luogu P1230 智力大冲浪
  9. qt repaint 用法_Qt重绘之update,repaint详解(转)
  10. 2021-9-7 破防了!!!崩溃瞬间,欲哭无泪