zoukankan      html  css  js  c++  java
  • DoveCLL and Resistance(湖北省赛)

    题目

    构造一个由串联和并联构成的纯电阻电路,使得该电路的等效电阻为p/q,其中(p,q) = 1。要求输出n,表示节点数,m表示电阻个数,m行每行ui,vi,wi,表示ui和vi之间要连上一个电阻为wi,然后输出s,t表示接入节点和接出节点。

    原题链接:https://www.nowcoder.com/acm/contest/104/D

    思路

    p/q = r + t/q,首先串联一个rΩ电阻,由并联电路电阻公式1/R = 1/R1 + 1/R2+...1/Rn,所以q/t = r2 + t2/q,其中r2可以用r2个1Ω电阻组成,如果t2不为0,重复上一步骤,这个可以递归完成。直到r为0或1,返回。

    代码实现

     1 #include<stdio.h>
     2 #include<iostream>
     3 using namespace std;
     4 
     5 struct  node
     6 {
     7     int u, v;
     8     int w;
     9     node(){}
    10     node(int nu,int nv,int nw):u(nu),v(nv),w(nw){}
    11 }ans[1000 + 10];
    12 int p, q;
    13 int numr;    //电阻个数
    14 int head,tail;
    15 
    16 
    17 inline void dfs(int x,int y,int l,int r)
    18 {
    19     if (x > y)
    20     {
    21         ans[numr++] = node(l, ++tail, x / y);
    22         x %= y;
    23         dfs(x, y, tail, r);
    24     }
    25     else
    26     {
    27         tail++;
    28         if (tail != r)  ans[numr++] = node(tail, r, 0);
    29         for (int i = 0; i < y / x; i++)  ans[numr++] = node(l, tail, 1);
    30         y %= x;
    31         if (y == 0)  return;
    32         if (y == 1)
    33         {
    34             ans[numr++] = node(l, tail, x);
    35             return;
    36         }
    37         dfs(x, y, l, tail);
    38     }
    39 }
    40 
    41 int main()
    42 {    
    43     while (scanf("%d%d",&p,&q) == 2)
    44     {
    45         numr = 0;
    46         head = tail = 1;
    47         if (p >= q)
    48         {
    49             ans[numr++] = node(1, 2, p / q);
    50             p %= q;
    51             head++;
    52             tail++;
    53         }
    54         dfs(p, q, head, head + 1);
    55         printf("%d %d
    ", tail, numr);
    56         for (int i = 0; i < numr; i++)
    57             printf("%d %d %d
    ", ans[i].u, ans[i].v, ans[i].w);
    58         printf("1 %d
    ", head + 1);
    59     }
    60 
    61     return 0;
    62 }

    参考链接:https://www.nowcoder.com/acm/contest/view-submission?submissionId=25692511

  • 相关阅读:
    Android studio USB连接失败
    BZOJ 1013 [JSOI2008]球形空间产生器sphere
    UVA1025
    noip2016天天爱跑步
    noip2015运输计划
    noip2012借教室
    BZOJ 1597: [Usaco2008 Mar]土地购买
    BZOJ1010: [HNOI2008]玩具装箱toy
    BZOJ1026: [SCOI2009]windy数
    BZOJ1801:[Ahoi2009]chess 中国象棋
  • 原文地址:https://www.cnblogs.com/lfri/p/9783040.html
Copyright © 2011-2022 走看看