ZOJ 3645 BiliBili 高斯消元 难度:1
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
高斯消元即可
#include <cstdio>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
const int maxn = 15;
double g[maxn][maxn],x[maxn];
double eps = 1e-8;
void debug(){
for(int i=0;i<12;i++){
for(int j=0;j<12;j++){
printf("%.2f%c",g[i][j],j==11?'\n':' ');
}
}
}
void gauss(){
memset(x,0,sizeof x);
for(int i = 0;i < 12;i++){
g[i][11] = -g[i][11] * g[i][11];
}
for(int i = 0;i < 12;i++){
for(int j = 0;j < 11;j++){
g[i][11] += g[i][j] * g[i][j];
}
}
for(int i = 0;i < 12;i++){
g[i][11] /= 2;
} for(int i = 0;i < 11;i++){
for(int j = 0;j < 12;j++){
g[i][j] -= g[11][j];
}
}
for(int i = 0;i < 11;i++){
//puts("begin");
// debug();
int maxr = i;
for(int j = i;j < 11;j++){
if(fabs(g[j][i]) > fabs(g[maxr][i])){
maxr=j;
}
}
if(maxr != i){
for(int j = i;j < 12;j++){
swap(g[i][j],g[maxr][j]);
}
}
// puts("after swap");
// debug();
for(int j = i + 1;j < 11;j++){
if(g[j][i] != 0){
double tmp = -g[j][i]/g[i][i];
for(int k = i;k < 12;k++){
g[j][k] += tmp * g[i][k];
}
}
}
}
for(int i = 10;i >= 0;i--){
double tmp = 0;
for(int j = i + 1;j < 11;j++){
tmp += g[i][j] * x[j];
}
x[i] = (g[i][11] - tmp) / g[i][i];
}
}
int main(){
int T;
scanf("%d",&T);
while(T--){
for(int i = 0;i < 12;i++){
for(int j = 0;j < 12;j++){
scanf("%lf",g[i]+j);
}
}
gauss();
for(int i=0;i<11;i++){
printf("%.2f%c",fabs(x[i])<eps?0:x[i],i==10?'\n':' ');
}
}
}
ZOJ 3645 BiliBili 高斯消元 难度:1的更多相关文章
- ZOJ 3645 BiliBili(高斯消元)
Shirai Kuroko is a Senior One student. Almost everyone in Academy City have super powers, and Kuroko ...
- 「ZOJ 1354」Extended Lights Out「高斯消元」
题意:给定一个\(5\times 6\)的棋盘的\(01\)状态,每次操作可以使它自己和周围四个格子状态取反,求如何操作,输出一个\(01\)矩阵 题解:这题可以通过枚举第一行的状态然后剩下递推来做, ...
- POJ1487 Single-Player Games 高斯消元
欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - POJ1487 题解概括 给出多个树形结构,由小写字母和数字表示,每个小写字母表示一棵小树.现在,以a为根节点 ...
- 【BZOJ-3143】游走 高斯消元 + 概率期望
3143: [Hnoi2013]游走 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 2264 Solved: 987[Submit][Status] ...
- 【BZOJ-3270】博物馆 高斯消元 + 概率期望
3270: 博物馆 Time Limit: 30 Sec Memory Limit: 128 MBSubmit: 292 Solved: 158[Submit][Status][Discuss] ...
- *POJ 1222 高斯消元
EXTENDED LIGHTS OUT Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 9612 Accepted: 62 ...
- [bzoj1013][JSOI2008][球形空间产生器sphere] (高斯消元)
Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球 面上n+1个点的坐标,你需要以最快的速度确定这个n维球体的球心坐标,以便于摧 ...
- hihoCoder 1196 高斯消元·二
Description 一个黑白网格,点一次会改变这个以及与其连通的其他方格的颜色,求最少点击次数使得所有全部变成黑色. Sol 高斯消元解异或方程组. 先建立一个方程组. \(x_i\) 表示这个点 ...
- BZOJ 2844 albus就是要第一个出场 ——高斯消元 线性基
[题目分析] 高斯消元求线性基. 题目本身不难,但是两种维护线性基的方法引起了我的思考. void gauss(){ k=n; F(i,1,n){ F(j,i+1,n) if (a[j]>a[i ...
随机推荐
- 代码中特殊的注释技术——TODO、FIXME和XXX的用处
本文内容概要: 代码中特殊的注释技术--TODO.FIXME和XXX的用处. 前言:今天在阅读Qt Creator的源代码时,发现一些注释中有FIXME英文单词,用英文词典居然查不到其意义!实际上, ...
- (三)stm32之串口通信DMA传输完成中断
一.DMA功能简介 首先唠叨一下DMA的基本概念,DMA的出现大大减轻了CPU的工作量.在硬件系统中,主要由CPU(内核).外设.内存(SRAM).总线等结构组成,数据经常要在内存和外设之间,外设和外 ...
- linux 命令集
cat chattr chgrp c hmod chown cksum cmp diff diffstat file find git gitview indent cut ln less ...
- 下载Android 5.0源码(附源码)
下载方法见我的另一篇博客:http://blog.csdn.net/maosidiaoxian/article/details/41680769 2014-12-24更新:5.0.1源码已上传. 这次 ...
- 【spring-quartz】 定时调度,时间设置
. CronTrigger时间格式配置说明 CronTrigger配置格式: 格式: [秒] [分] [小时] [日] [月] [周] [年] 序号 说明 是否必填 允许填写的值 允许的通配符 1 ...
- HBase之过滤器
filter ==> SQL 中的Where filter的执行流程: 过滤器在客户端创建,然后通过RPC发送到服务器上,由服务器执行 基础过滤器: 比较器: Comparator D ...
- winScp 跳板机到服务器
http://jingyan.baidu.com/article/454316ab6ffe1af7a7c03a31.html?qq-pf-to=pcqq.group
- list转datatable c#
private DataTable ToDataTable<T>(List<T> items) { var tb = new DataTable(typeof(T).Name) ...
- const 不再迷茫
博客地址:http://blog.csdn.net/jiangxinnju github:https://github.com/jiangxincode 首先说明一下const在C和C++中的主要用法 ...
- Eclipse小技巧
Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ ...