BZOJ 2419: 电阻 [高斯消元 物理]
http://www.lydsy.com/JudgeOnline/problem.php?id=2419
题意:
n个点m个电阻构成一张图,求1到n的等效电阻
第一节课看一道题弃疗,于是来做这道物理题
orz PoPoQQQ大爷 http://blog.csdn.net/popoqqq/article/details/41703037
电流形成的图类似一个流网络,也满足流量平衡:(貌似好像有个叫基尔霍夫定律的玩意儿,然而我只知道基尔霍夫矩阵....)
令从$1$到$n$流的电流$I=1$,则:
$\sum\limits\frac{U_i-U_j}{R_{i,j}}=0$
$\sum\limits\frac{U_1-U_j}{R_{1,j}}=1$
$\sum\limits\frac{U_n-U_j}{R_{i,n}}=-1$
$U_n=0$
辣么答案就是$U_1$啦
一个点一个方程,然后高斯消元
怎么让$U_n=0$呢?这可是方程啊.............直接赋值就行了
实现上的小技巧:两点之间可能有多个电阻,所以直接保存电阻的倒数(电导)就好了,直接相加
我这个xx竟然忘记输出后换行了...
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
typedef long long ll;
const int N=;
int n,m,u,v;
double g[N][N],a[N][N],r;
void buildEquation(){
for(int i=;i<n;i++)
for(int j=;j<=n;j++)
a[i][i]+=g[i][j],a[i][j]-=g[i][j];
a[][n+]=;
a[n][n+]=-;
a[n][n]=;a[n][n+]=;
}
void GaussElimination(){
for(int i=;i<=n;i++){
int r=i;
for(int j=i+;j<=n;j++)
if(abs(a[j][i])>abs(a[r][i])) r=j;
if(r!=i) for(int k=;k<=n+;k++) swap(a[i][k],a[r][k]); for(int j=i+;j<=n;j++){
double t=a[j][i]/a[i][i];
for(int k=i;k<=n+;k++) a[j][k]-=a[i][k]*t;
}
}
for(int i=n;i>=;i--){
for(int j=n;j>i;j--) a[i][n+]-=a[j][n+]*a[i][j];
a[i][n+]/=a[i][i];
}
}
void ini(){memset(g,,sizeof(g));memset(a,,sizeof(a));}
int main(){
freopen("in","r",stdin);
while(scanf("%d%d",&n,&m)!=EOF){
ini();
for(int i=;i<=m;i++){
scanf("%d%d%lf",&u,&v,&r);
if(u==v) continue;
g[u][v]+=/r;g[v][u]+=/r;
}
buildEquation();
GaussElimination();
printf("%.2lf\n",a[][n+]);
}
}
BZOJ 2419: 电阻 [高斯消元 物理]的更多相关文章
- BZOJ 2115 DFS+高斯消元
思路: 先搞出来所有的环的抑或值 随便求一条1~n的路径异或和 gauss消元找异或和最大 贪心取max即可 //By SiriusRen #include <cstdio> #inclu ...
- BZOJ 3143 HNOI2013 游走 高斯消元 期望
这道题是我第一次使用高斯消元解决期望类的问题,首发A了,感觉爽爽的.... 不过笔者在做完后发现了一些问题,在原文的后面进行了说明. 中文题目,就不翻大意了,直接给原题: 一个无向连通图,顶点从1编号 ...
- BZOJ 3270 && BZOJ 1778 (期望DP && 高斯消元)
BZOJ 3270 :设置状态为Id(x,y)表示一人在x,一人在y这个状态的概率. 所以总共有n^2种状态. p[i]表示留在该点的概率,Out[i]=(1-p[i])/Degree[i]表示离开该 ...
- BZOJ.4820.[SDOI2017]硬币游戏(思路 高斯消元 哈希/AC自动机/KMP)
BZOJ 洛谷 建出AC自动机,每个点向两个儿子连边,可以得到一张有向图.参照 [SDOI2012]走迷宫 可以得到一个\(Tarjan\)+高斯消元的\(O((nm)^3)\)的做法.(理论有\(6 ...
- [BZOJ 1013][JSOI 2008] 球形空间产生器sphere 题解(高斯消元)
[BZOJ 1013][JSOI 2008] 球形空间产生器sphere Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球 面 ...
- BZOJ 2337 XOR和路径 | 高斯消元 期望 位运算
BZOJ 2337 XOR和路径 题解 这道题和游走那道题很像,但又不是完全相同. 因为异或,所以我们考虑拆位,分别考虑每一位: 设x[u]是从点u出发.到达点n时这一位异或和是1的概率. 对于所有这 ...
- bzoj 2844: albus就是要第一个出场 高斯消元
LINK 题意:看题目不如看样例解释.给出有n个数的集合,对这些子集中的数求异或,升序统计所有子集得到的数(重复会被计入),询问一个数x,问这个数出现的第一个位置 思路:在这里要求一个所有可能出现的异 ...
- [BZOJ 4820] [SDOI2017] 硬币游戏(高斯消元+概率论+字符串hash)
[BZOJ 4820] [SDOI2017] 硬币游戏(高斯消元+概率论+字符串hash) 题面 扔很多次硬币后,用H表示正面朝上,用T表示反面朝上,会得到一个硬币序列.比如HTT表示第一次正面朝上, ...
- [HDU3976]Electric resistance(电阻)(信竞&物竞)(高斯消元)
题面 Problem Description Now give you a circuit who has n nodes (marked from 1 to n) , please tell abc ...
随机推荐
- Qt 共享库(动态链接库)和静态链接库的创建及调用
前言: 编译器 Qt Creator, 系统环境 win7 64 位 1.创建共享库: 新建文件或项目->选择 Library 和 c++ 库->选择共享库->下一步(工程名为 sh ...
- 属性getter和setter
我们知道,对象属性是由名字.值和一组特性(attribute)构成的.在ECMAScript5 中,属性值可以用一个或两个方法替代,这两个方法就是getter和setter.由getter和sette ...
- vi的常用命令
https://zhidao.baidu.com/question/332242228.html vi的基本操作 a) 进入vi 在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面: $ v ...
- 认识Java(1)
Java是一门程序设计语言. 有三个方向: JAVA SE (java platform standard edition):包含java核心类,如数据库.接口.网络编程. JAVA ME(java ...
- vue-cli的webpack模版项目配置解析
上一篇文章已经分析了build/dev-server.js,里面使用到了其他config文件. 那么我们这篇文章,按着dev-server.js的使用顺序,来分析下其他文件. 首选,调用check-v ...
- dedecms_
2012-7-5(no1)当我们点击检索结果的某个电影超链接时,如何跳转到对应的内容页[本资源由www.qinglongweb.com搜集整理] dedelist标签 --可以嵌套 项目移植: mys ...
- Harris角点检测原理分析
看到一篇从数学意义上讲解Harris角点检测很透彻的文章,转载自:http://blog.csdn.net/newthinker_wei/article/details/45603583 主要参考了: ...
- HTML <td> 标签的 rowspan 属性
rowspan 属性规定单元格可横跨的行数. colspan 属性规定单元格可横跨的列数.
- MYSQL Optimizing LIMIT Queries
如果要指定查询的数据行数,在查询语句中使用limit子句,而不是获取所有数据行结果集,然后去掉没用的数据. MYSQL有时会对没有having子句,带有limit关键字的查询进行优化: 1:如果用li ...
- Build path contains duplicate entry
问题:Build path contains duplicate entry:''D:soft/Myeclipse 6.5/jre/lib/rt.jar' for project 'dataServi ...