http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=4835

由题意,有:

(x1-x11)^2 + (x2-x12)^2 ... = D[1]^2

(x1-x21)^2 + (x2-x22)^2 ... = D[2]^2

...

(x1-x12,1)^2 + (x2-x12,2)^2 ... = D[12]^2

所以

-x1^2 + x11 * x1 .... = (-D[12] ^ 2 + x11` ^ 2 + x12 ^ 2 ....)/2

-x1^2 + x21 * x1 .... = (-D[22] ^ 2 + x21 ^ 2 + x22 ^ 2 ....)/2

高斯消元即可

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <cmath>
  4. #include <algorithm>
  5. using namespace std;
  6. const int maxn = 15;
  7. double g[maxn][maxn],x[maxn];
  8. double eps = 1e-8;
  9. void debug(){
  10. for(int i=0;i<12;i++){
  11. for(int j=0;j<12;j++){
  12. printf("%.2f%c",g[i][j],j==11?'\n':' ');
  13. }
  14. }
  15. }
  16. void gauss(){
  17. memset(x,0,sizeof x);
  18. for(int i = 0;i < 12;i++){
  19. g[i][11] = -g[i][11] * g[i][11];
  20. }
  21. for(int i = 0;i < 12;i++){
  22. for(int j = 0;j < 11;j++){
  23. g[i][11] += g[i][j] * g[i][j];
  24. }
  25. }
  26. for(int i = 0;i < 12;i++){
  27. g[i][11] /= 2;
  28. }
  29.  
  30. for(int i = 0;i < 11;i++){
  31. for(int j = 0;j < 12;j++){
  32. g[i][j] -= g[11][j];
  33. }
  34. }
  35. for(int i = 0;i < 11;i++){
  36. //puts("begin");
  37. // debug();
  38. int maxr = i;
  39. for(int j = i;j < 11;j++){
  40. if(fabs(g[j][i]) > fabs(g[maxr][i])){
  41. maxr=j;
  42. }
  43. }
  44. if(maxr != i){
  45. for(int j = i;j < 12;j++){
  46. swap(g[i][j],g[maxr][j]);
  47. }
  48. }
  49. // puts("after swap");
  50. // debug();
  51. for(int j = i + 1;j < 11;j++){
  52. if(g[j][i] != 0){
  53. double tmp = -g[j][i]/g[i][i];
  54. for(int k = i;k < 12;k++){
  55. g[j][k] += tmp * g[i][k];
  56. }
  57. }
  58. }
  59. }
  60. for(int i = 10;i >= 0;i--){
  61. double tmp = 0;
  62. for(int j = i + 1;j < 11;j++){
  63. tmp += g[i][j] * x[j];
  64. }
  65. x[i] = (g[i][11] - tmp) / g[i][i];
  66. }
  67. }
  68. int main(){
  69. int T;
  70. scanf("%d",&T);
  71. while(T--){
  72. for(int i = 0;i < 12;i++){
  73. for(int j = 0;j < 12;j++){
  74. scanf("%lf",g[i]+j);
  75. }
  76. }
  77. gauss();
  78. for(int i=0;i<11;i++){
  79. printf("%.2f%c",fabs(x[i])<eps?0:x[i],i==10?'\n':' ');
  80. }
  81. }
  82. }

ZOJ 3645 BiliBili 高斯消元 难度:1的更多相关文章

  1. ZOJ 3645 BiliBili(高斯消元)

    Shirai Kuroko is a Senior One student. Almost everyone in Academy City have super powers, and Kuroko ...

  2. 「ZOJ 1354」Extended Lights Out「高斯消元」

    题意:给定一个\(5\times 6\)的棋盘的\(01\)状态,每次操作可以使它自己和周围四个格子状态取反,求如何操作,输出一个\(01\)矩阵 题解:这题可以通过枚举第一行的状态然后剩下递推来做, ...

  3. POJ1487 Single-Player Games 高斯消元

    欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - POJ1487 题解概括 给出多个树形结构,由小写字母和数字表示,每个小写字母表示一棵小树.现在,以a为根节点 ...

  4. 【BZOJ-3143】游走 高斯消元 + 概率期望

    3143: [Hnoi2013]游走 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2264  Solved: 987[Submit][Status] ...

  5. 【BZOJ-3270】博物馆 高斯消元 + 概率期望

    3270: 博物馆 Time Limit: 30 Sec  Memory Limit: 128 MBSubmit: 292  Solved: 158[Submit][Status][Discuss] ...

  6. *POJ 1222 高斯消元

    EXTENDED LIGHTS OUT Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 9612   Accepted: 62 ...

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

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

  8. hihoCoder 1196 高斯消元·二

    Description 一个黑白网格,点一次会改变这个以及与其连通的其他方格的颜色,求最少点击次数使得所有全部变成黑色. Sol 高斯消元解异或方程组. 先建立一个方程组. \(x_i\) 表示这个点 ...

  9. BZOJ 2844 albus就是要第一个出场 ——高斯消元 线性基

    [题目分析] 高斯消元求线性基. 题目本身不难,但是两种维护线性基的方法引起了我的思考. void gauss(){ k=n; F(i,1,n){ F(j,i+1,n) if (a[j]>a[i ...

随机推荐

  1. Python学习(12)日期和时间

    目录 Python 日期和时间 时间元组 获取当前时间 获取格式化时间 格式化日历 获取某月日历 Time模块 日历模块 其他相关模块和函数 Python 日期和时间 Python 程序能用很多方式处 ...

  2. TCP/IP协议学习(一) LWIP实现网络远程IAP下载更新

    最近需要实现通过TCP/IP远程IAP在线更新功能,忙了2周终于在原有嵌入式服务器的基础上实现了该功能,这里就记录下实现的过程. IAP又称在应用编程,其实说简单点就是实现不需要jlink,仅通过芯片 ...

  3. go语言中间的循环

    在Go语言中只有很少的几个控制结构,它没有while或者do-while循环. 但是它有for.switch.if.而且switch接受像for那样可选的初始化语句.下面来认识一下他们 一.if语句 ...

  4. Java 抓取 thread dump (Full Thread Stack Trace) 方法汇总

    顾名思义,表示一个时间点上,显示进程里面每一个线程的 stack trace,以及线程之间关联,比如等待 常用来定位一些 不响应,CPU 很高,内存使用很高问题 汇总表格如下 工具 操作系统 Java ...

  5. 能在CAD2004以下版本里面打开2007以上版本文件的外挂

    下载地址:http://yunpan.cn/cjrxMKNubXQ5E  访问密码 1974 老何CAD工具安装办法:[推荐]先安装老何工具箱,然后用[扩展添加老何cad下拉菜单.bat]就完成老何下 ...

  6. 堆排序(C语言)

    #ifndef HEAP_SORT_H #define HEAP_SROT_H #include<iostream> void maxHeap(int *arr,unsigned int ...

  7. 记一次基于Unity的Profiler性能分析

    A. WaitForTargetFPS: Vsync(垂直同步)功能所,即显示当前帧的CPU等待时间    B. Overhead:       Profiler总体时间-所有单项的记录时间总和.用于 ...

  8. OneProxy与其它数据库中间件的对比

    OneProxy 优点 性能 缺点 闭源,被商业公司掌控,到时候随别人蹂躏 可维护性极差,缺乏友好的出错信息,光维护这个环节就被他人掌控 定价不明 有没有这样的公司? 大到10wtps,但是没人能理解 ...

  9. DirectX中的纹理及其创建

    正如大多初学者会遇到一个问题, 导入的图片为何不是原来的尺寸?例如800*600的实际上通过D3DXCreateTextureFromFile后变成的是1024*1024,即宽和高默认都会自动扩展为2 ...

  10. bzoj题解汇总(1017-1020)

    bzoj1017: 树形dp. 设\(f[i][j][k]\)表示当前在点\(i\),有\(j\)个用于上层合成,花费金币为\(k\)的最大攻击力. bzoj1018: 一题多解. http://ww ...