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 ...
随机推荐
- maven学习3,如何创建一个web项目
Maven学习 (三) 使用m2eclipse创建web项目 1.首先确认你的eclipse已经安装好m2eclipse的环境,可以参照上两篇Maven学习内容 2.新建一个maven的项目 ...
- UserView--第一种方式set去重,基于Spark算子的java代码实现
UserView--第一种方式set去重,基于Spark算子的java代码实现 测试数据 java代码 package com.hzf.spark.study; import java.util.Ha ...
- ftp上传文件,本地安装了,服务器上也需要在也安装一个ftp
服务器需要配置FTP服务: 你说的在你自己电脑上安装的只是一个FTP软件,用于连接远程服务器进行上传和下载文件的. 追问 在本地已经安装了,链接的话要在服务器上也安装一个吗? 追答 额,你有FTP服务 ...
- dede织梦栏目页和文章页中获取当前栏目名称方法
一般情况下,在dede织梦系统中列表页.栏目页和文章页中获取当前所在栏目名称只需要代码:{dede:type}[field:typename]{/dede:type}即可,不需要定义ID,默认的就是当 ...
- 为什么要进行URL编码
我们都知道Http协议中参数的传输是"key=value"这种简直对形式的,如果要传多个参数就需要用“&”符号对键值对进行分割.如"?name1=value1&a ...
- 详解Office 外接程序 COM Add In的LoadBehavior及其妙用
Office的所有COM Add In,包括用Shared Add In模板和VSTO Add In模板创建的,都会在注表里面存储一些信息.对于当前用户安装的Add In,以Excel为例,对应的注册 ...
- 自己动手搭建一个简易的SpringBoot环境
什么是springboot? Spring Boot俗称微服务.Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特 ...
- C语言 模2除法
C语言中的模2除法: 模2除做法与算术除法类似,但每一位除(减)的结果不影响其它位,即不向上一位借位.所以实际上就是异或.然后再移位移位做下一位的模2减. 步骤如下: a.用除数对被除数最高n位做模2 ...
- PL/SQL FAQ in installation "make sure you have the 32 bits Oracle client installed" and "Database character set(AL32UTF8) and Client character set (GBK) are different"
requirement : connecting to remote oracle server . now I know the connectionURL :connectionUrl :jdb ...
- linux_mount相关故障
fstab修改错误导致系统无法启动故障修复方案 1. 维护模式或救援模式 2. mount -o rw,remount 挂载点 # 这个方式也可以解决有些分区只能读的故障 3. 然后修改 /etc/f ...