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: 电阻 [高斯消元 物理]的更多相关文章

  1. BZOJ 2115 DFS+高斯消元

    思路: 先搞出来所有的环的抑或值 随便求一条1~n的路径异或和 gauss消元找异或和最大 贪心取max即可 //By SiriusRen #include <cstdio> #inclu ...

  2. BZOJ 3143 HNOI2013 游走 高斯消元 期望

    这道题是我第一次使用高斯消元解决期望类的问题,首发A了,感觉爽爽的.... 不过笔者在做完后发现了一些问题,在原文的后面进行了说明. 中文题目,就不翻大意了,直接给原题: 一个无向连通图,顶点从1编号 ...

  3. BZOJ 3270 && BZOJ 1778 (期望DP && 高斯消元)

    BZOJ 3270 :设置状态为Id(x,y)表示一人在x,一人在y这个状态的概率. 所以总共有n^2种状态. p[i]表示留在该点的概率,Out[i]=(1-p[i])/Degree[i]表示离开该 ...

  4. BZOJ.4820.[SDOI2017]硬币游戏(思路 高斯消元 哈希/AC自动机/KMP)

    BZOJ 洛谷 建出AC自动机,每个点向两个儿子连边,可以得到一张有向图.参照 [SDOI2012]走迷宫 可以得到一个\(Tarjan\)+高斯消元的\(O((nm)^3)\)的做法.(理论有\(6 ...

  5. [BZOJ 1013][JSOI 2008] 球形空间产生器sphere 题解(高斯消元)

    [BZOJ 1013][JSOI 2008] 球形空间产生器sphere Description 有一个球形空间产生器能够在n维空间中产生一个坚硬的球体.现在,你被困在了这个n维球体中,你只知道球 面 ...

  6. BZOJ 2337 XOR和路径 | 高斯消元 期望 位运算

    BZOJ 2337 XOR和路径 题解 这道题和游走那道题很像,但又不是完全相同. 因为异或,所以我们考虑拆位,分别考虑每一位: 设x[u]是从点u出发.到达点n时这一位异或和是1的概率. 对于所有这 ...

  7. bzoj 2844: albus就是要第一个出场 高斯消元

    LINK 题意:看题目不如看样例解释.给出有n个数的集合,对这些子集中的数求异或,升序统计所有子集得到的数(重复会被计入),询问一个数x,问这个数出现的第一个位置 思路:在这里要求一个所有可能出现的异 ...

  8. [BZOJ 4820] [SDOI2017] 硬币游戏(高斯消元+概率论+字符串hash)

    [BZOJ 4820] [SDOI2017] 硬币游戏(高斯消元+概率论+字符串hash) 题面 扔很多次硬币后,用H表示正面朝上,用T表示反面朝上,会得到一个硬币序列.比如HTT表示第一次正面朝上, ...

  9. [HDU3976]Electric resistance(电阻)(信竞&物竞)(高斯消元)

    题面 Problem Description Now give you a circuit who has n nodes (marked from 1 to n) , please tell abc ...

随机推荐

  1. Spring框架学习笔记(2)——IOC&DI

    IOC:控制反转,创建对象的权利交给Spring,Spring会自动创建对象. DI:依赖注入,操作的对象靠Spring注入,如果不使用Spring,对象的属性值是要靠setter方法来添加的,使用S ...

  2. 开始使用 HBuilder 和 Mui - 1 - 分析 index.html ;

    转自:http://ask.dcloud.net.cn/article/240 好吧,在比较了 Codenameone 和 HBuilder 以后,俺反复考虑后,终于还是决定使用 HBuilder 这 ...

  3. 通俗理解TCP握手次数是三次

    理解之后,应该说是至少三次就可以保证可靠传输了. 看到网上一篇帖子http://www.cnblogs.com/TechZi/archive/2011/10/18/2216751.html是这么说的, ...

  4. [20160711][在Windows下调用neven链接库]

    相关说明 这篇文档是接前篇[20160711][neven代码移植Windows]和[20160711][VS2012配置OpenCV2.4.9]下完成,首先需要通过篇文档编译出neven动态链接库和 ...

  5. 转:深入理解Java的接口和抽象类

    转载原文链接: http://www.cnblogs.com/dolphin0520/p/3811437.html 一.抽象类 在了解抽象类之前,先来了解一下抽象方法.抽象方法是一种特殊的方法:它只有 ...

  6. 【开发技术】Java生成验证码

    Java生成验证码 为了防止用户恶意,或者使用软件外挂提交一些内容,就得用验证码来阻止,虽然这个会影响用户体验,但为了避免一些问题很多网站都使用了验证码;今天下午参考文档弄了一个验证码,这里分享一下; ...

  7. Android-第一天

    1.google 2.application->application framework->libraries(调用关系) 3.strings.xml 是全局字符串的配置文件 4.ADT ...

  8. HTML <a href >标签的target属性

    规定在何处打开链接文档. _blank    在新窗口中打开被链接文档 _parent  在父框架集中打开被链接文档 _self      默认.在相同的框架中打开被链接文档 _top      在整 ...

  9. 5分钟学会使用gitlab

    第一次接触到gitlab,操作不是很熟练,犯了一堆错,在多次尝试之后,大概了解了流程,这篇文章主要帮助大家快速上手gitlab,如果文章有什么不对的地方,欢迎在评论区留言~ 1.新建项目 首先你得有个 ...

  10. 2017-07-07(zip unzip gzip gunzip)

    zip压缩格式 zip zip 压缩文件名   源文件    (压缩文件) zip -r    压缩文件名   源文件   (压缩目录) unzip unzip 压缩名 .gz压缩格式 gzip gz ...