当前位置: 首页 > news >正文

【bzoj1013】[JSOI2008]球形空间产生器sphere

  题目传送门:bzoj1013

  其实就是设球心在第$ i $维坐标为$ x_i $,第$ i $个点在第$ j $维的坐标为$ a_{i,j} $,然后列一堆方程:

  $ \sum_{i=1}^{n} (x_i-a_{1,i})^2 = \sum_{i=1}^{n} (x_i-a_{2,i})^2 = \sum_{i=1}^{n} (x_i-a_{3,i})^2 = ... =\sum_{i=1}^{n} (x_i-a_{n+1,i})^2 $

  把完全平方拆开减去同类项就成了n个一次方程,直接上高斯消元(其实就是模拟人手工解方程)。

  代码:

#include<cstdio>
#include<cmath>
#define eps 1e-18
double a[20][20],mat[20][20],ans[20];
int n;
int gauss()
{
    int now=1;
    for(int i=1;i<=n;i++){
        int tmp=now;
        for(;tmp<=n;tmp++)
            if(fabs(mat[tmp][i])>eps)break;
        if(tmp>n)break;
        if(now<tmp){
            for(int j=1;j<=n+1;j++){
                double t=mat[now][j]; mat[now][j]=mat[tmp][j]; mat[tmp][j]=t;
            }
        }
        for(int j=now+1;j<=n;j++){
            double t=mat[j][i]/mat[now][i];
            for(int k=1;k<=n+1;k++)
                mat[j][k]-=t*mat[now][k];
        }
        ++now;
    }
    for(int i=now;i<=n;i++)
        if(fabs(mat[i][n+1])>eps)return 0;
    return 1;
}
int main()
{
    scanf("%d",&n);
    for(int i=0;i<=n;i++)
        for(int j=1;j<=n;j++)
            scanf("%lf",&a[i][j]);
    for(int i=1;i<=n;i++){
        double sum=0;
        for(int j=1;j<=n;j++){
            sum+=a[0][j]*a[0][j]-a[i][j]*a[i][j];
            mat[i][j]=2*(a[0][j]-a[i][j]);
        }
        mat[i][n+1]=sum;
    }
    gauss();
    for(int i=n;i;i--){
        double tmp=mat[i][n+1];
        for(int j=1;j<=n;j++)
            tmp-=ans[j]*mat[i][j];
        ans[i]=tmp/mat[i][i];
    }
    for(int i=1;i<n;i++)
        printf("%.3lf ",ans[i]);
    printf("%.3lf\n",ans[n]);
}
bzoj1013

 

转载于:https://www.cnblogs.com/quzhizhou/p/10070688.html

相关文章:

  • 与众不同 windows phone (44) - 8.0 位置和地图
  • 小程序开发之获取小程序二维码
  • Android Contextual Menus之二:contextual action mode
  • 基本类型和引用类型的值 动态的属性
  • JVM启动参数小结
  • java B2B2C源码电子商务平台 -----客户端负载均衡策略
  • 八年技术加持,性能提升10倍,阿里云HBase 2.0首发商用
  • 构建基于WCF Restful Service的服务
  • Python基础10_动态传参,名称空间和作用域,函数嵌套,关键字global和nonlocal
  • Log4j.properties配置详解
  • Linux环境搭建 | 使用WinSCP远程连接虚拟机
  • Spring boot JPA 用自定义主键策略 生成自定义主键ID
  • java 环境 eclipse 配置
  • 福大软工 · 第十次作业 - 项目测评(团队) [已完成]
  • Html页面插入flash代码
  • [PHP内核探索]PHP中的哈希表
  • 2017-08-04 前端日报
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • JavaScript DOM 10 - 滚动
  • jquery ajax学习笔记
  • js
  • mockjs让前端开发独立于后端
  • Python3爬取英雄联盟英雄皮肤大图
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 从输入URL到页面加载发生了什么
  • 诡异!React stopPropagation失灵
  • 目录与文件属性:编写ls
  • 前言-如何学习区块链
  • 入口文件开始,分析Vue源码实现
  • 小程序01:wepy框架整合iview webapp UI
  • 赢得Docker挑战最佳实践
  • 运行时添加log4j2的appender
  • No resource identifier found for attribute,RxJava之zip操作符
  • ​【已解决】npm install​卡主不动的情况
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • ​第20课 在Android Native开发中加入新的C++类
  • #if 1...#endif
  • #每天一道面试题# 什么是MySQL的回表查询
  • #在 README.md 中生成项目目录结构
  • (2020)Java后端开发----(面试题和笔试题)
  • (9)目标检测_SSD的原理
  • (C++20) consteval立即函数
  • (libusb) usb口自动刷新
  • (十三)Flask之特殊装饰器详解
  • (四)搭建容器云管理平台笔记—安装ETCD(不使用证书)
  • (一)使用IDEA创建Maven项目和Maven使用入门(配图详解)
  • (译) 函数式 JS #1:简介
  • (转)nsfocus-绿盟科技笔试题目
  • (转)利用PHP的debug_backtrace函数,实现PHP文件权限管理、动态加载 【反射】...
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .NET CF命令行调试器MDbg入门(四) Attaching to Processes
  • .NET Remoting学习笔记(三)信道
  • .NET 回调、接口回调、 委托
  • .NET/C# 的字符串暂存池