• 天体赛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
  • 相关阅读:
    django静态资源转移
    QT5 内置Multimedia开发音乐播放器
    Qt Creator 设置编码格式为 UTF-8
    QT 出错 moc_mainwindow.obj:-1: error: LNK2019: 无法解析的外部符号 " 中被引用...
    linux 安装node, 添加软链接,更改npm安装源
    django.template.exceptions.TemplateDoesNotExist: index.html
    centos下使用virtualenv建立python虚拟环境
    win7上 nginx 出现 403 Forbidden
    django安装xadmin中出现的报错汇总
    centos安装mysql57
  • 原文地址:https://www.cnblogs.com/fjl-vxee/p/5623867.html
Copyright © 2020-2023  润新知