较为麻烦的并查集

主要是我的模板是错的检查了好久。。。。

先是输入 把每个家庭连在一起

输出的家庭编号为该家庭所有编号的最小值  在并查集里面完成

第一次 0~n-1遍历储存好 家庭编号 和房子面积和数量

第二次0~N遍历 遍历家庭人数

第三遍 处理人均面积和家庭数量和人均数量

#include<bits/stdc++.h>
using namespace std;
int f[];
int find1(int x)
{
int j=x;
while(j!=f[j])
j=f[j];
int cur=x;
if(cur!=j)
{
int t=f[cur];
f[cur]=j;
cur=t;
}
return j;
} void union1(int x,int y)
{
int x1=find1(x);
int y1=find1(y);
if(x1<y1)f[y1]=x1;
else f[x1]=y1;
return ;
} struct peo
{
int id;
double n,s;
int num;
int flag;
peo()
{
id=n=s=flag=num=;
}
}s[],ans[];
int vis[]={}; bool cmp(struct peo a,struct peo b)
{
if(a.s!=b.s)return a.s>b.s;
else
return a.id<b.id;
} int main()
{
for(int i=;i<;i++)f[i]=i;
int k,q;
scanf("%d",&k);
int a,b,c;
for(int i=;i<k;i++)
{
scanf("%d%d%d",&a,&b,&c);
s[i].id=a;
vis[a]=;
if(b!=-)
{union1(a,b);vis[b]=;}
if(c!=-)
{union1(a,c);vis[c]=;}
scanf("%d",&q);
while(q--)
{
scanf("%d",&b);
if(b!=-)
{union1(b,a);vis[b]=;}
}
scanf("%lf%lf",&s[i].n,&s[i].s);
} for(int i=;i<k;i++)
{
int a=find1( s[i].id );
ans[ a ].id=a;
ans[ a ].s+=s[i].s;
ans[ a ].n+=s[i].n;
ans[ a ].flag=;
} for(int i=;i<;i++)
{
if(vis[i])
{
int a=find1( i );
ans[a].num+=;
}
} int cnt=;
for(int i=;i<;i++)
{
if(ans[i].flag)
{ cnt++;
ans[i].s=(double)ans[i].s/ans[i].num;
ans[i].n=(double)ans[i].n/ans[i].num;
}
}
sort(ans,ans+,cmp);
printf("%d\n",cnt);
for(int i=;i<cnt;i++)
printf("%04d %d %.3lf %.3lf\n",ans[i].id,ans[i].num,ans[i].n,ans[i].s);
}

家庭房产L2-007的更多相关文章

  1. 团体程序设计天梯赛-练习集L2-007. 家庭房产

    L2-007. 家庭房产 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定每个人的家庭成员和其自己名下的房产,请你统计出每个 ...

  2. L2-007. 家庭房产

    L2-007. 家庭房产 题目链接:https://www.patest.cn/contests/gplt/L2-007 并查集 初学,看这题的时候完全没有什么好的想法,参考了@yinzm的blog用 ...

  3. L2-007 家庭房产 (25 分)

    L2-007 家庭房产 (25 分)   给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(≤),随后N行,每行按下 ...

  4. L2-007. 家庭房产(并查集)*

    L2-007. 家庭房产 参考博客 #include <iostream> #include <cstdio> #include <cstring> #includ ...

  5. 天梯赛 L2-007. (并查集) 家庭房产

    题目链接 题目描述 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(<=1000),随后N行,每行按下列格式 ...

  6. PATL2-007. 家庭房产-并查集

    L2-007. 家庭房产 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定每个人的家庭成员和其自己名下的房产,请你统计出每个 ...

  7. pat 团体天梯赛 L2-007. 家庭房产

    L2-007. 家庭房产 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产 ...

  8. L2-007 家庭房产 (25 分) (并查集)

    链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805068539215872 题目: 给定每个人的家庭成员和其自己名 ...

  9. PAT L2-007 家庭房产

    https://pintia.cn/problem-sets/994805046380707840/problems/994805068539215872 给定每个人的家庭成员和其自己名下的房产,请你 ...

  10. pat 团体赛练习题集 L2-007. 家庭房产

    给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(<=1000),随后N行,每行按下列格式给出一个人的房产: ...

随机推荐

  1. java实现版本比较

    package com.hzxc.chess.server.util; /** * Created by hdwang on 2018/3/19. * 版本比较工具类 */ public class ...

  2. c++并发编程之条件变量(Condition Variable)

    条件变量(Condition Variable)的一般用法是:线程 A 等待某个条件并挂起,直到线程 B 设置了这个条件,并通知条件变量,然后线程 A 被唤醒.经典的「生产者-消费者」问题就可以用条件 ...

  3. json字符串转java对象

    今天遇到一个问题,前端ajax获取到一个javaBean对象,好多方法发ajax请求需要把这个对象再传到后端,后端再根据这个对象进行操作(之前计划传递id,但发现传递id的话,后端多个方法都需要根据i ...

  4. ajax实现输入用户名异步提示是否可用

    <script type="text/javascript"> //页面加载完毕后执行 $(document).ready(function(){ //用户名输入框绑定 ...

  5. SQL记录-PLSQL循环

    PL/SQL循环   可能有一种情况,当需要执行的代码块的几个多次.在一般情况下,语句顺序执行:一个函数的第一条语句,首先执行,然后是第二个...等等. 编程语言提供了各种控制结构,允许更多复杂的执行 ...

  6. HTTP记录-HTTP介绍

    超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通信的规则,通过因特网传送万维网文档的数据传送协议.是一个应用程序级的 ...

  7. python 手写队列

    #encoding=utf8 class MQueue: def __init__(self): self.data = [] def get(self): if self.data.__len__( ...

  8. Miller_Rabin 素数测试

    费马定理的逆定理几乎可以用来判断一个数是否为素数,但是有一些数是判断不出来的,因此,Miller_Rabin测试方法对费马的测试过程做了改进,克服其存在的问题. 推理过程如下(摘自维基百科): 摘自另 ...

  9. Xgboost理解

    一.xgboost模型函数形式 xgboost也是GBDT的一种,只不过GBDT在函数空间进行搜索最优F的时候,采用的是梯度下降法也就是一阶泰勒展开:而xgboost采用的是二阶泰勒展开也就是牛顿法, ...

  10. Java Service Wrapper将java程序设置为服务

    有时候我们希望我们java写的程序作为服务注册到系统中,Java Service Wrapper(下面简称wrapper)是目前较为流行的将Java程序部署成Windows服务的解决方案, 本文将讨论 ...