团体程序设计天梯赛(L2-007 家庭房产 (25 分))

中国高校计算机大赛团体程序设计天梯赛考点内容总结(15分以上题) L1: L1-002 打印沙漏 (20 分) 字符模拟 L1-003 个位数统计 (15 分) 字符模拟 L1-005 考试座位号 (15 分) 模拟 L1-006 连续因子 (20 分) 数学因数分解 L1-009 N个数求和 (20 分) 数学gcd,lcm L1-011 A-B (20 分) 字符串模拟 L1-015 跟奥巴马一起画方块 (15 分) 模拟 L1-016 查验身份证 (15 分) 数组模拟 L1-017 到底有多二 (15 分) 数学计算 L1-019 谁先倒 (15 分) 模拟 L 阅读详情

题目:

思路分析:

求一个家庭相当于求一个连通块 那么直接并查集的思想就行

不过这里我们合并时候把数字最小的当老祖宗 方便

第一次遍历是求房产数 和 面积的和

第二次遍历是求家族的人数

第三次遍历是计算平均值! 

代码实现:

const int MAX=1000010;
struct node{
    int id,people;
    double sum1,sum2;
};
node q1[MAX],q2[MAX];
node ans[MAX];
int Ra[MAX];
int fa[MAX];
int vis[MAX];
int vis1[MAX];
bool cmp(node a,node b){
    if(a.sum2==b.sum2){
        return a.id<b.id;
    }
    return a.sum2>b.sum2;
}
int Find(int x)
{
    int temp = x ;
    while(fa[temp]!=temp)
        temp = fa[temp] ;
    return temp;
}
void add(int x , int y)
{
    int t1 , t2 ;
    t1 = Find(x) ;
    t2 = Find(y) ;
    if(t1 != t2)
    {
        if(t1 > t2)
        {
            fa[t1] = t2 ;
        }
        else fa[t2] = t1 ;
    }
}

//int Find(int x){
//    if(x==fa[x]) return x;
//    return fa[x]==Find(fa[x]);
//}
//void add(int x,int y){
//    int xx=Find(x);
//    int yy=Find(y);
//    if(xx==yy) return;
//    if(xx>yy){
//        fa[xx]=yy;
//    }
//    else {
//        fa[yy]=xx;
//    }
//}
int main(){
    int n,id,f,m,k,son;
    cin>>n;
    for(int i=0;i<MAX;i++)
        fa[i]=i;
    for(int i=0;i<n;i++){
        cin>>id;
        cin>>f>>m;
        vis[id]=1;
        if(f!=-1){
            vis[f]=1;
            add(id,f);
        }
        if(m!=-1){
            vis[m]=1;
            add(id,m);
        }
        cin>>k;
        for(int i=0;i<k;i++){
            cin>>son;
            if(son!=-1){
                vis[son]=1;
                add(id,son);
            }
        }
        cin>>q1[i].sum1;
        cin>>q1[i].sum2;
        q1[i].id=id;
    }
    for(int i=0;i<n;i++){
        
            int t=Find(q1[i].id);
            q2[t].id=t;
            q2[t].sum1+=q1[i].sum1;
            q2[t].sum2+=q1[i].sum2;
        
    }
    for(int i=0;i<MAX;i++){
        if(vis[i]){
            int t=Find(i);
            q2[t].people++;
        }
    }
    int num=0;
    for(int i=0;i<MAX;i++){
        if(vis[i]){
            int t=Find(i);
            if(!vis1[t]){
                vis1[t]=1;
                double xx=q2[t].people;
                ans[num].id=t;
                ans[num].people=int(xx);
                ans[num].sum1=q2[t].sum1*1.0/xx;
                ans[num++].sum2=q2[t].sum2*1.0/xx;
            }
        }
    }
    sort(ans,ans+num,cmp);
    cout<<num<<endl;
    for(int i=0;i<num;i++){
        printf("%04d %d %.3f %.3f\n" , ans[i].id,ans[i].people,ans[i].sum1,ans[i].sum2);
    }
}

L2-007 家庭房产 (25 分)   L2-007 家庭房产 (25 分) 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。 输入格式: 输入第一行给出一个正整数N(≤1000),随后N行,每行按下列格式给出一个人的房产: 编号 父 母 k 孩子1 ... 孩子k 房产套数 总面积 其中编号是每个人独有的一个4位数的编号;父和母分别是该编号对应的这个人的父母的编号(如果已... 阅读详情

相关推荐

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

L2-007. 家庭房产 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。 输入格式: 输入第一行给出一个正整数N( 编号 父 母 k

大咸鱼。。。 1101

团体程序设计天梯赛 L2-007 家庭房产(并查集模拟)

分数 25给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。

X_StarX的博客 889

PTA团体程序设计天梯赛

PTA团体程序设计天梯赛 有链接部分为完成的,其余未完成 ==================================== L1-001 Hello World 5 L1-002 打印沙漏 20 L1-003 个位数统计 15 L1-004 计算摄氏温度 5 L1-005 考试座位号 15 L1-006 连续因子 20 L1-007 念数字 10 L1-009 N个数求和 20 L1-010 比较大小 10 L1-011 A-B 20 L1-012 计算指数 5 L1-013 计算阶乘

qq_52384627的博客 2828

团体程序设计天梯赛L2-007 家庭房产(并查集)

思路:用并查集维护家庭的人...就是神烦... #include #include #include #include using namespace std; struct Node { int id,fa,ma,k,son[6],n,area; }nodes[1005]; struct Node1 { int id; int num; int sum1,sum2; do

围巾的ACM博客 1590

PTA-团体程序设计天梯赛-并查集-L2-007 家庭房产 (25分)

L2-007 家庭房产 (25分) 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。 输入格式: 输入第一行给出一个正整数N(≤1000),随后N行,每行按下列格式给出一个人的房产: 编号 父 母 k 孩子1 … 孩子k 房产套数 总面积 其中编号是每个人独有的一个4位数的编号;父和母分别是该编号对应的这个人的父母的编号(如果已经过世,则显示-1);k(0≤k≤5)是该人的子女的个数;孩子i是其子女的编号。 输出格式: 首先在第一行输出家庭个数(所有有亲属关系的人

weixin_43846587的博客 520

团体程序设计天梯赛竞赛题--进阶题【L2-007 家庭房产】

进阶级 4 道题,每道题 25 分,满分为 100 分。

Pretty Boy Fox的博客 294

程序设计天梯赛L2-007 (家庭房产,并查集+排序)

题目 题意: 给定n个人的编号、父母的编号、孩子的编号、他拥有的房产数量、房产面积,按人均房产面积降序、如有并列按编号升序的形式输出每个家庭的相关信息。 思路: 经典的pta题目,很麻烦。用并查集维护每个人属于哪个家庭。有一个好写法就是最后输入完成后,将每个点的信息统一更新到他所在树上的根节点上,最后排序输出即可。 时间复杂度: O(nlogn) 代码: #include<bits/stdc++.h> using namespace std; const int N = 1e5+10; int

xianqiuyigedao的博客 967

【团体程序设计天梯赛 往年关键真题 详细分析&完整AC代码】L2-007 家庭房产(并查集)& L2-008 最长对称子串 (字符串-manacher模板题)

L2-007 家庭房产给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。 L2-008 最长对称子串对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定`Is PAT&TAP symmetric?`,最长对称子串为`s PAT&TAP s`,于是你应该输出11。

Obliviate的博客 391

程序设计天梯赛L2-007 家庭房产(太逆天了,做题老看题解导致忘了这题并查集怎么写了,直接建图dfs做的,麻烦的一)

题目 题意: 略。经典排序题。 思路: 用了超笨的方法,建图dfs用并查集合并,最后排序输出。 时间复杂度: O(能过) 代码: #include<bits/stdc++.h> using namespace std; const int N = 1e5+10; const int M = 9999; int n,m,k,T; struct node{ int id = 77777; //编号 int num = 1; //人数 double tot; //房产数 d

xianqiuyigedao的博客 725

网络虚拟化介绍(OVS、DVS)

网络虚拟化概念网络虚拟化就是把网络层的一些功能从硬件中剥离出来,建立新的网络虚拟层;该虚拟层可以接管网络服务和配置,实现网络服务与物理层的解耦,打破物理资源限制;通过网络虚拟层能够在一个物理网络上模拟出多个逻辑网络,并且多用户在逻辑网络上相互隔离,保证网络安全网络虚拟化的特点隔离性:不同租户的流量相互之间不能互访;但是IP/MAC地址都可以独立规划可移动性:虚拟机可以跨二层/三层迁移,甚至可以跨广域网迁移(迁移前后虚拟机Vlan和IP地址都不会发生变化)可扩展性:逻辑网络的规模和数量可扩展。

m0_49864110的博客 1万+

STM32CubeIDE中文注释变乱码终极解决方案:3步设置永久解决锟斤拷问题!

你是否在STM32CubeIDE中遇到过这样的崩溃场景?——精心编写的中文注释在重新生成代码后变成“锟斤拷”乱码,不仅影响代码可读性,反复修改更是浪费大量时间!作为STM32开发者,我曾被这个问题困扰许久,试过修改软件设置、工程编码却始终治标不治本。直到发现这个基于Java环境变量的终极解决方案,才彻底解决了中文乱码难题。

smart_boy__的博客 2955

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

题目链接 并查集的略微扩展,用Size数组记录人数,num数组记录房产数,area数组记录面积 就是处理起来会有点麻烦。#include <cstdio> #include <iostream> #include <cstring> #include <string> #include <algorithm> #include <vector> #include <set

No Program No Life 637

【故障排查】telnet连接失败:端口23不可达的深度分析与解决方案

本文深度剖析了telnet连接失败,特别是端口23不可达的常见原因与系统性解决方案。文章从客户端本地配置、服务器端服务与防火墙、中间网络路径三个层面,提供了详细的排查步骤与命令,并强调了Telnet协议的安全风险,建议使用SSH等更安全的替代方案进行远程管理与端口测试。

weixin_29306011的博客 898

团体程序设计天梯赛 L2-007 家庭房产

团体程序设计天梯赛 L2-007 家庭房产 题目链接 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。 输入格式: 输入第一行给出一个正整数N(≤1000),随后N行,每行按下列格式给出一个人的房产: 编号 父 母 k 孩子1 … 孩子k 房产套数 总面积 其中编号是每个人独有的一个4位数的编号;父和母分别是该编号对应的这个人的父母的编号(如果已经过世,则显示-1);k(0≤k≤5)是该人的子女的个数;孩子i是其子女的编号。 输出格式: 首先在第一行输出家庭个数(

旺崽的博客 2615

ANSYS材料库实战:手把手教你用APDL命令流定义混凝土和形状记忆合金

本文详细介绍了在ANSYS中使用APDL命令流定义混凝土和形状记忆合金(SMA)的高级建模技巧。通过SOLID65单元和SMA本构模型,工程师可以精确模拟非线性材料行为,包括混凝土的开裂和SMA的超弹性效应。文章提供了完整的命令流示例和求解策略优化建议,帮助用户提升工程仿真效率。

hh234的博客 486

8、多导睡眠图记录中基于级联自适应滤波器的脑电图信号噪声去除

本文提出了一种基于三级级联自适应滤波器的新型方法,用于去除多导睡眠图(PSG)记录中脑电图(EEG)信号的常见伪迹,包括50/60 Hz电源线干扰、心电图(ECG)和眼电图(EOG)伪迹。该方法采用最小均方(LMS)算法,通过分阶段滤波有效分离并衰减各类噪声,在保留EEG关键神经节律信息的同时显著提升信号质量。研究利用MIT-BIH数据库中的18份真实PSG记录进行验证,结果表明该方法具有无相位失真、实现简单、自适应能力强等优势,适用于睡眠研究及脑机接口等生物医学应用领域。

banana的博客 173

团体程序设计天梯赛 L2 题目合集

目前 L1 的题目已经刷完,打算在赛前刷完 L2 的题目。本来想 L2 的题目都写个相对详细的题解的,但是由于时间已经很紧张了,就只能像来记录 L1题目的形式来 L2 的题解了,让我们都好好加油吧。

Veggie的博客 1万+

华为od统一考试B卷【单词搜索】C++ 实现

找到它是一个小游戏,你需要在一个矩阵中找到给定的单词。假设给定单词 HELLOWORD,在矩阵中只要能找到 H->E->L->L->O->W->O->R->L->D连成的单词,就算通过。意区分英文字母大小写,并且您只能上下左右行走,不能走回头路。

MISAYAONE的博客 709

团体程序设计天梯赛-练习集 L2 阶段全部题解(c/c++版本)

标号 标题 分数 提交通过率 L2-001 紧急救援 25 7808/32856 (23.76%) L2-002 链表去重 25 6263/24874 (25.18%) L2-003 月饼 25 6588/24235 (27.18%) L2-004 这是二叉搜索树吗? 25 4559/13550 (33.65%) L2-005 ...

m0_57006708的博客 3461

[网络安全提高篇] 一一九.恶意软件动态分析经典沙箱Cape的安装和基础用法详解

这是作者网络安全自学教程系列,主要是关于安全工具和实践操作的在线笔记,特分享出来与博友们学习,希望您喜欢,一起进步。前文详细介绍恶意代码静态分析经典工具Capa的基础用法,以及批量提取静态特征和ATT&CK技战术,主要是从提取的静态特征Json文件中提取关键特征。这篇文章将详细讲解动态分析沙箱Cape,其是一个开源的自动恶意软件分析系统,通过自动运行和分析恶意软件,全面分析和提取恶意软件的关键特征。本文先介绍Cape沙箱的安装和基础用法,后续随着深入再分享。基础性文章,希望对您有帮助!

杨秀璋的专栏 1万+

ArcGIS Pro 制作这种地图海报

ArcMap 版本与 ArcGIS Pro 版本的制图功能相差太多,无论从美观上还是制图效率都远远优于 ArcMap,用了一段时间的 ArcGIS Pro ,真心推荐有条件的大家赶紧试一试!一个软件也能搞定一张不错的海报哦!----吐槽:好的设计真的是门花时间的活,这个教程大概花了我7小时左右,我都忘了我自己教程中截图多少张了!(可能是我速度太慢了)测试数据:阿里云盘分享-----北极海冰数据.https://www.aliyundrive.com/s/SUhsnqfkmXh。

J_Giser的博客 1427

团体程序设计天梯赛L2题解

由于目前网上容易搜索到的PTA-L2题解写法往往较为复杂,难以跟上最新的XCPC风格,比如链式向前星等方法使用STL库更为简单,本人将大二期间写的一些关于L2的代码作收集,方便大家观看~以后会考虑将每题写上题解的,下次一定一定~有些题目当时拿了23/24飘过的就没补,在下面就不放了~有问题欢迎评论区咨询。

2301_76650919的博客 1298

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

团体程序设计天梯赛 L2-007 家庭房产 (25分)

题目链接: L2-007 家庭房产 (25分) 思路: 对于每个人,将和自己有关系的人都保存下来,将每个人的房产保存下来,然后对所有人dfs即可; 代码: #include<bits/stdc++.h> using namespace std; const int maxn = 12345; vector<int> G[maxn]; int n, vst[max...

Yuhan的博客 522

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

团体程序设计天梯赛-练习集-java

团体程序设计天梯赛-练习集-java版本 博客提供题目解析,解题思路,ac代码。 对于无法ac的代码提供相应ac的C++代码

谢谢 啊sir的博客 6121

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

【CCCC】PAT : 团体程序设计天梯赛-练习集 L2 答案,题解,附代码

【CCCC】PAT : 团体程序设计天梯赛-练习集 L2 答案 鉴定完毕,全部水题 ヾ(•ω•`)o 知识点分类(32): 1、树锯结构(9):二叉树的存储,编号,遍历顺序转换,求深度,底层节点,从底部向上搜索公共祖先。多叉树存储,遍历,求深度。 2、图论模板(3):Dijkstra,图的存储遍历,度数统计。 3、其他结构(7):并查集(4)+链表(2)+栈(1); 4、模拟水题(8):好吧大概有一半数据有点坑; 5、零零碎碎(5):STL(2)+贪心(2)+数学(1); 标号 代码提交 题解链接

小哈里的博客 2633

团体程序设计天梯赛-练习集 L2-007 家庭房产 (25分) 并查集思想+坑点分析

L2-007 家庭房产 (25分) 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。 输入格式: 输入第一行给出一个正整数N(≤1000),随后N行,每行按下列格式给出一个人的房产: 编号 父 母 k 孩子1 … 孩子k 房产套数 总面积 其中编号是每个人独有的一个4位数的编号;父和母分别是该编号对应的这个人的父母的编号(如果已经过世,则显示-1);k(0≤k≤5)是该人的子女的个数;孩子i是其子女的编号。 输出格式: 首先在第一行输出家庭个数(所有有亲属关系的人

秀岩的博客 493
上一篇: 团体程序设计天梯赛(L2-006 树的遍历 (25 分))
下一篇: 团体程序设计天梯赛(L2-008 最长对称子串 (25 分))
郭晋龙
博客等级 码龄6年 940粉丝 449原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭晋龙

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值