题目

传送门 to VJ

题目概要
给你一个电路图,求 1 1 1 号节点到 n n n 号节点的总电阻是多少。

数据范围与约定
数据组数 T ≤ 100 , 1 < n ≤ 50 , 0 < T\le 100,1<n\le 50,0< T≤100,1<n≤50,0< 边的数量 m ≤ 2000 , 1 ≤ m\le 2000,1\le m≤2000,1≤ 电阻阻值 R ≤ 1 0 4 R\le 10^4 R≤104 。图是联通的简单图。

思路

众所周知,电压来源于电势差。

所以假设每个节点的电势即可。然后利用流入电流 = = = 流出电流建立方程即可。

可以规定 1 1 1 号节点的电势为 1 0 4 v 10^4\tt{v} 104v 且 n n n 号节点的电势为 0 v 0\tt{v} 0v 。

然后利用欧姆定律, R = U I R=\frac{U}{I} R=IU​ 即可计算。

代码

#include <cstdio>
#include <iostream>
#include <vector>
#include <cmath>
#include <cstring>
#include <algorithm>
using namespace std;
bool lessThan(double a,double b){return a+1e-6 < b;
}
bool equalsTo(double a,double b){return lessThan(a,b) and lessThan(b,a);
}const int MaxN = 55;
struct Matrix{double a[MaxN][MaxN];int n, m;Matrix(){ this->clear(); }void clear(){ memset(a,0,sizeof a); }bool Gauss(){for(int i=1,cal=1; cal<m and i<=n; ++cal){int id = i; // 第i行for(int j=i+1; j<=n; ++j)if(fabs(a[id][cal]) < fabs(a[j][cal]))id = j; // 找绝对值最大的一行if(id != i) swap(a[i],a[id]);if(equalsTo(a[i][cal],0)) continue;for(int j=1; j<=n; ++j) if(i != j)for(int k=m; k>=cal; --k) // f = a[j][cal]/a[i][cal]a[j][k] -= a[i][k]*a[j][cal]/a[i][cal];for(int j=m; j>=cal; --j)a[i][j] /= a[i][cal];++ i; // 处理下一行}for(int i=m; i<=n; ++i)if(not equalsTo(a[i][m],0))return false; // 无解return true; // 有至少一个解}void paint(){for(int i=1; i<=n; ++i)for(int j=1; j<=m; ++j)printf("%f%c",a[i][j],j==m?'\n':' ');}
} mat;int resistance[MaxN][MaxN];
void work(){mat.clear(); // 进行清零memset(resistance,0,MaxN*MaxN<<2);scanf("%d %d",&mat.n,&mat.m);for(int i=1,x,y,z; i<=mat.m; ++i){scanf("%d %d %d",&x,&y,&z);resistance[x][y] = z;resistance[y][x] = z;}for(int i=2; i<mat.n; ++i)for(int j=1; j<=mat.n; ++j){if(i == j or resistance[i][j] == 0)continue;mat.a[i][j] = 1.0/resistance[i][j];mat.a[i][i] += -mat.a[i][j];}mat.m = mat.n+1; // 恰好有解的矩阵mat.a[1][1] = 1, mat.a[1][mat.m] = 10000;// 规定U1 = 10000vmat.a[mat.n][mat.n] = 1; // 规定Un = 0vmat.Gauss();double flow = 0; // 电流for(int i=2; i<=mat.n; ++i)if(resistance[1][i] != 0)flow += (mat.a[1][mat.m]-mat.a[i][mat.m])/resistance[1][i];printf("%.2f\n",(mat.a[1][mat.m]-mat.a[mat.n][mat.m])/flow);
}int main(){int T; scanf("%d",&T);for(int i=1; i<=T; ++i){printf("Case #%d: ",i);work(); // ppl or2}return 0;
}

Electric resistance相关推荐

  1. 大学计算机英语怎么说,大学计算机是什么意思

    1. 基于X窗口的图形用户接口编辑器的设计与实现吴庆炜,蔡士杰(中国科学院计算技术研究所CAD开放实验室,北京100080)(南京大学计算机科学与技术系,南京210093)摘要本文介绍了一个用于描述. ...

  2. 各行业的英语术语(绝对精华3)

    b]企业缩写词[/b] 5S管理 ABC : 作業制成本制度 (Activity-Based Costing) ABB : 實施作業制預算制度 (Activity-Based Budgeting) A ...

  3. 国家电网职称英语计算机答案,国家电网职称英语题库短文判断

    <国家电网职称英语题库短文判断>由会员分享,可在线阅读,更多相关<国家电网职称英语题库短文判断(47页珍藏版)>请在人人文库网上搜索. 1.短文判断Passage 1 Feat ...

  4. c语言controlled变量的作用,Gate-controlled A-C switch

    摘要: This new silicon switch (Fig. 1) has a high-impedance (off) state in which it blocks 200 v peak, ...

  5. IFC基本单位定义(basic unit declaration)

    IFC基本单位定义(basic unit declaration) 单位定义是为了度量具体量的数值表示什么意义. measures和values IfcProject定义全局单位 实例一: // 基本 ...

  6. 数模电路基础知识 —— 0. 常见基本单位与定义

    符号与单位 名称 单位 电学符号 定义 电压(Voltage) 单位伏特,记为 VVV UUU 电子元器件两端的电势差 电流(Electric Current) 单位安培,记为 AAA III 单位时 ...

  7. Battery electric vehicles (BEVs) 快充技术

    Battery electric vehicles (BEVs) 快充技术 BEVs: Not If, But When and How Fast 电池电动汽车(bev)已经开始走上一条陡峭的部署增长 ...

  8. 只有20%的iOS程序员能看懂:详解intrinsicContentSize 及 约束优先级/content Hugging/content Compression Resistance

    在了解intrinsicContentSize之前,我们需要先了解2个概念: AutoLayout在做什么 约束优先级是什么意思. 如果不了解这两个概念,看intinsic content size没 ...

  9. Codeforces Round #200 (Div. 1)A. Rational Resistance 数学

    A. Rational Resistance Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/343 ...

最新文章

  1. python中x y表示_Python中表达式x += y和x = x+y 的区别详解
  2. 【小项目关键技术】硬件通信三种方式、串口、IIC、SPI
  3. 如何控制并发和控制死锁(内含pb的处理要点)
  4. Mybatis(1)---入门篇单表查询
  5. 05-雷海林-mysql备份原理与在TDSQL中的实践
  6. 号称“绝对安全”的量子通信到底是什么?
  7. Untiy3D - 3 打飞碟小游戏
  8. NOIP模拟 位运算(trie树+按位贪心)
  9. w7设置双显示器_4K+144Hz 支持FreeSync Acer XV273K显示器评测
  10. Android jetpack Room数据库(一)基本使用
  11. 2014年值得关注的10个开源项目(下)
  12. oracle支持utf8字符集,AL32UTF8/UTF8(Unicode)数据库字符集含义
  13. gtx1660是什么级别的_GTX1660相当于什么显卡 三月显卡天梯图秒懂GTX1660性能
  14. 这台IPAD最适合程序员编程!!!
  15. 清除缓冲区的几种方法
  16. LMG3422R030RQZR 600V GaN晶体管LMG3425R030RQZR电路图
  17. iOS 打电话、发短信、写邮件、打开常用软件的几种方式
  18. 【Zotero高效知识管理】(4)Zotero的文献管理、阅读及笔记知识管理
  19. VHDL实现智能药盒
  20. windows系统安装Racket后使用raco指令

热门文章

  1. SteamVR Plugin安装教程
  2. ios开发日记- 7 禁用搜狗键盘 使用系统键盘
  3. Armv9 registers
  4. 文本转为mardown表格或者是excel在线工具
  5. [转] 良好的设计才能产出精品
  6. java 图片批量上传_SpringBoot 2.0 图片上传(支持批量上传)
  7. 如何导出IEEE中的参考文献
  8. 点击按钮自动复制到剪贴板的实现
  9. oracle flashback on,Oracle Flashback database
  10. Swift-析构过程