hdu 3976 Electric resistance (高斯消元)
2015-03-18 19:08
363 查看
题意:
给出一个电路图,两个节点之间连一个电阻,现在问1~n的等效电阻是多少。
题解:
首先考虑一个节点,物理上的常识,这个节点流入和流出的电流和是0,那么我们假设这个节点的电势为x1,那么那么这个节点可以列出方程 x1/r1+x1/r2+....x1/ri=0,然后考虑n个节点,可以列出n个这样的方程求解得出答案,对于方程我们是假设流入1的电流为1,流出n的电流肯定就是-1,那么最后的等效电阻肯定是(x1-x2)/1.0
给出一个电路图,两个节点之间连一个电阻,现在问1~n的等效电阻是多少。
题解:
首先考虑一个节点,物理上的常识,这个节点流入和流出的电流和是0,那么我们假设这个节点的电势为x1,那么那么这个节点可以列出方程 x1/r1+x1/r2+....x1/ri=0,然后考虑n个节点,可以列出n个这样的方程求解得出答案,对于方程我们是假设流入1的电流为1,流出n的电流肯定就是-1,那么最后的等效电阻肯定是(x1-x2)/1.0
#include<iostream> #include<math.h> #include<stdio.h> #include<algorithm> #include<string.h> #include<vector> #include<queue> #include<map> #include<set> using namespace std; #define B(x) (1<<(x)) void cmax(int& a,int b){ if(b>a)a=b; } void cmin(int& a,int b){ if(b<a)a=b; } typedef long long ll; const int oo=0x3f3f3f3f; const ll OO=1LL<<61; const int MOD=10007; const int maxn=55; double maze[maxn][maxn]; double x[maxn]; #define eps 1e-8 int Gauss(int n,int m){ int r,c; for(r=0,c=0;r<n&&c<m;r++,c++){ int id=r; for(int i=r+1;i<n;i++){ if(fabs(maze[i][c])>fabs(maze[id][c])){ id=i; } } if(fabs(maze[id][c]) < eps) continue; if(id!=r){ for(int j=c;j<=m;j++){ swap(maze[r][j],maze[id][j]); } } for(int i=0;i<n;i++){ if(i==r) continue; if(fabs(maze[i][c])>eps){ double t=fabs(maze[i][c])/fabs(maze[r][c]); if(maze[i][c]*maze[r][c]<0)t=-t; for(int j=c;j<=m;j++){ maze[i][j]-=maze[r][j]*t; } } } } for(int i = 0; i < n; i++) x[i] = (fabs(maze[i][i]) < eps) ? 0.0 : (maze[i] / maze[i][i]); return 0; } int main(){ //freopen("G:\\read.txt","r",stdin); int T,n,m,u,v,r; scanf("%d",&T); for(int cas=1;cas<=T;cas++){ scanf("%d %d",&n,&m); for(int i=0;i<n;i++){ for(int j=0;j<=n;j++){ maze[i][j]=0.0; } } while(m--){ scanf("%d %d %d",&u,&v,&r); u--;v--; maze[u][v]+=1.0/r; maze[u][u]-=1.0/r; maze[v][u]+=1.0/r; maze[v][v]-=1.0/r; } maze[0] =-1.0; maze[n-1] =1.0; Gauss(n,n); printf("Case #%d: %.2lf\n",cas,x[0]-x[n-1]); } return 0; } /** */
相关文章推荐
- HDU 3976 (高斯消元 KCL方程)
- hdu 3976 Electric resistance 高斯消元
- hdu 3976 高斯消元 模板
- HDU 3976 Electric resistance (高斯消元)
- hdu 3976 Electric resistance——高斯消元
- HDU 3976 Electric resistance(高斯消元)
- hdu 3976 Electric resistance 高斯消元(浮点满秩模板)
- HDU 3976 Electric resistance(高斯消元)
- hdu 3976 Electric resistance(高斯消元)
- hdu4418——Time travel(概率DP+高斯消元)
- HDU - 3359 Kind of a Blur - 高斯-约当消元
- hdu-4818-RP problem(高斯消元)
- hdu 5006 Resistance(基尔霍夫+高斯消元)
- HDU 5833 Zhu and 772002 高斯消元
- HDU - 4418 Time travel 高斯消元求期望
- HDU 5006 Resistance 缩点 + 高斯消元
- HDU 4870 Rating 2014 Multi-University Training Contest 1 J题 概率DP+高斯消元
- HDU 2262 Where is the canteen 期望dp+高斯消元
- [hdu 1071]The area 高斯消元
- hdu 5088(高斯消元)