zoukankan      html  css  js  c++  java
  • 天体赛L2-007. 家庭房产

    题目链接:https://www.patest.cn/contests/gplt/L2-007

    这几天一直在练并查集。。。

     1 #include <cstdio>
     2 #include <algorithm>
     3 
     4 using namespace std;
     5 
     6 const double EPS=0.0001;
     7 
     8 struct Node {
     9     int index,peo;
    10     double buil,area;
    11 
    12     bool operator < (const Node& a) const {
    13         return area-EPS>a.area||(abs(area-a.area)<EPS&&index<a.index);
    14     }
    15 }que[10005];
    16 
    17 struct Fam {
    18     int i,f,m,k[5],n,b,a;
    19 }p[1005];
    20 
    21 int n,pa,pb,tail;
    22 int par[10005],mn[100005],peo[10005],buil[10005],area[10005];
    23 bool vis[10005];
    24 
    25 int getPar(int a) {
    26     if(par[a]!=a) {
    27         par[a]=getPar(par[a]);
    28     }
    29     return par[a];
    30 }
    31 
    32 void merg(int a,int b) {
    33     pa=getPar(a);
    34     pb=getPar(b);
    35     if(pa!=pb) {
    36         par[pb]=pa;
    37         mn[pa]=min(mn[pa],mn[pb]);
    38         peo[pa]+=peo[pb];
    39         buil[pa]+=buil[pb];
    40         area[pa]+=area[pb];
    41     }
    42 }
    43 
    44 int main() {
    45     while(1==scanf("%d",&n)) {
    46         for(int i=0;i<10000;++i) {
    47             par[i]=mn[i]=i;
    48             peo[i]=1;
    49             buil[i]=0;
    50             area[i]=0;
    51             vis[i]=true;
    52         }
    53         for(int i=0;i<n;++i) {
    54             scanf("%d%d%d%d",&p[i].i,&p[i].f,&p[i].m,&p[i].n);
    55             for(int j=0;j<p[i].n;++j) {
    56                 scanf("%d",&p[i].k[j]);
    57             }
    58             scanf("%d%d",&buil[p[i].i],&area[p[i].i]);
    59         }
    60         for(int i=0;i<n;++i) {
    61             vis[p[i].i]=false;
    62             if(p[i].f!=-1) {
    63                 merg(p[i].i,p[i].f);
    64                 vis[p[i].f]=false;
    65             }
    66             if(p[i].m!=-1) {
    67                 merg(p[i].i,p[i].m);
    68                 vis[p[i].m]=false;
    69             }
    70             for(int j=0;j<p[i].n;++j) {
    71                 if(p[i].k[j]!=-1) {
    72                     merg(p[i].i,p[i].k[j]);
    73                     vis[p[i].k[j]]=false;
    74                 }
    75             }
    76         }
    77         tail=0;
    78         for(int i=0;i<10000;++i) {
    79             if(!vis[i]&&par[i]==i) {
    80                 que[tail].index=mn[i];
    81                 que[tail].peo=peo[i];
    82                 que[tail].area=1.0*area[i]/peo[i];
    83                 que[tail++].buil=1.0*buil[i]/peo[i];
    84             }
    85         }
    86         sort(que,que+tail);
    87         printf("%d
    ",tail);
    88         for(int i=0;i<tail;++i) {
    89             printf("%04d %d %.3lf %.3lf
    ",que[i].index,que[i].peo,que[i].buil,que[i].area);
    90         }
    91     }
    92     return 0;
    93 }

    参考链接:http://doc.okbase.net/idealism_xxm/archive/229098.html
  • 相关阅读:
    基于 HTML5 WebGL 构建智能数字化城市 3D 全景
    基于 H5 + WebGL 实现 3D 可视化地铁系统
    基于 HTML5 WebGL 的 3D 科幻风机
    基于 HTML5 + WebGL 的太阳系 3D 展示系统
    HT Vue 集成
    基于 HTML5 + WebGL 的地铁 3D 可视化系统
    基于 HTML5 WebGL 和 VR 技术的 3D 机房数据中心可视化
    String、StringBuffer和StringBuilder的区别
    Python--Numpy基础
    python中的next()以及iter()函数
  • 原文地址:https://www.cnblogs.com/fjl-vxee/p/5623867.html
Copyright © 2011-2022 走看看