GPLT L2-007 家庭房产 (并查集)
题意:
给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数、人均房产面积及房产套数。
思路:
输入和输出各构造一个结构体,利用并查集归并输入,枚举编号进行输出。
#include <bits/stdc++.h>
using namespace std; const int M=11000; struct DATA{
int id,fid,mid,num,area;
int cid[10];
}data[M]; struct NODE{
int id,people;
double num,area;
bool flag=false;
}ans[M]; int father[M];
bool visit[M]; int Find(int x){
while(x!=father[x]) x=father[x];
return x;
} void Union(int A,int B){
int faA=Find(A);
int faB=Find(B);
if(faA>faB) father[faA]=faB;
if(faB>faA) father[faB]=faA;
} bool cmp(NODE a,NODE b){
if(a.area==b.area) return a.id<b.id;
else return a.area>b.area;
} int main()
{
int n,k,cnt=0;cin>>n;
for(int i=0;i<M;i++) father[i]=i;
for(int i=0;i<n;i++){
cin>>data[i].id>>data[i].fid>>data[i].mid>>k;
visit[data[i].id]=true;
if(data[i].fid!=-1){
Union(data[i].fid,data[i].id);
visit[data[i].fid]=true;
}
if(data[i].mid!=-1){
Union(data[i].mid,data[i].id);
visit[data[i].mid]=true;
}
for(int j=0;j<k;j++){
cin>>data[i].cid[j];
Union(data[i].id,data[i].cid[j]);
visit[data[i].cid[j]]=true;
}
cin>>data[i].num>>data[i].area;
}
for(int i=0;i<n;i++){
int id=Find(data[i].id);
ans[id].id=id;
ans[id].num+=data[i].num;
ans[id].area+=data[i].area;
ans[id].flag=true;
}
for(int i=0;i<M;i++){
if(visit[i]) ++ans[Find(i)].people;
if(ans[i].flag) ++cnt;
}
for(int i=0;i<M;i++){
if(ans[i].flag){
ans[i].num=1.0*ans[i].num/ans[i].people;
ans[i].area=1.0*ans[i].area/ans[i].people;
}
}
sort(ans,ans+M,cmp);
printf("%d\n",cnt);
for(int i=0;i<cnt;i++)
printf("%04d %d %.3f %.3f\n",
ans[i].id,ans[i].people,ans[i].num,ans[i].area);
return 0;
}
GPLT L2-007 家庭房产 (并查集)的更多相关文章
- PATL2-007. 家庭房产-并查集
L2-007. 家庭房产 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定每个人的家庭成员和其自己名下的房产,请你统计出每个 ...
- L2-007. 家庭房产(并查集)
#include <cstdio> #include <set> #include <vector> #include <algorithm> usin ...
- TOJ3660家庭关系(并查集+hash+图的连通性)
家庭关系 时间限制(普通/Java):1000MS/3000MS 运行内存限制:65536KByte 总提交: 38 测试通过: 9 描述 给定若干家庭成员之间的关系 ...
- GPLT L2-010 排座位 (并查集)
Tips: 数据范围较小时可把二维数组当做map<pair<int,int>,int>使用. #include <bits/stdc++.h> using name ...
- L2-007 家庭房产 (25 分) (并查集)
链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805068539215872 题目: 给定每个人的家庭成员和其自己名 ...
- 天梯赛 L2-007. (并查集) 家庭房产
题目链接 题目描述 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(<=1000),随后N行,每行按下列格式 ...
- L2-007. 家庭房产(并查集)*
L2-007. 家庭房产 参考博客 #include <iostream> #include <cstdio> #include <cstring> #includ ...
- L2-007 家庭房产 (25分) 并查集
题目链接 题解:并查集把一个家的并在一起,特殊的一点是编号大的并到小的去.这个题有个坑编号可能为0000,会错数据3和5. 1 #include<bits/stdc++.h> 2 usin ...
- 团体程序设计天梯赛-练习集L2-007. 家庭房产
L2-007. 家庭房产 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定每个人的家庭成员和其自己名下的房产,请你统计出每个 ...
随机推荐
- LeetCode430 扁平化多级双向链表
您将获得一个双向链表,除了下一个和前一个指针之外,它还有一个子指针,可能指向单独的双向链表.这些子列表可能有一个或多个自己的子项,依此类推,生成多级数据结构,如下面的示例所示. 扁平化列表,使所有结点 ...
- 【二分搜索树】1、二分查找法的实现 - Binary Search
简单记录 - bobo老师的玩转算法系列–玩转算法 - 二分搜索树 二叉搜索树 Binary Search Tree 查找问题 Searching Problem 查找问题是计算机中非常重要的基础问题 ...
- 【MySQL】Last_SQL_Errno: 1594Relay log read failure: Could not parse relay log event entry...问题总结处理
备库报错: Last_SQL_Errno: 1594 Last_SQL_Error: Relay log read failure: Could not parse relay log event e ...
- 并发编程之fork/join(分而治之)
1.什么是分而治之 分而治之就是将一个大任务层层拆分成一个个的小任务,直到不可拆分,拆分依据定义的阈值划分任务规模. fork/join通过fork将大任务拆分成小任务,在将小任务的结果join汇总 ...
- cookie加密 当浏览器全面禁用三方 Cookie
cookie加密 cookie localstorage 区别 https://mp.weixin.qq.com/s/vHeRStcCUarwqsY7Y1rpGg 当浏览器全面禁用三方 ...
- 不占用额外内存空间能否做到 将图像旋转90度 N × N矩阵表示的图像,其中每个像素的大小为4字节
给定一幅由N × N矩阵表示的图像,其中每个像素的大小为4字节,编写一种方法,将图像旋转90度. 不占用额外内存空间能否做到? 示例 1: 给定 matrix = [ [1,2,3], [4,5,6] ...
- 查看窗口名 调用dll setForegroundWindow
package main import ( "fmt" "log" "syscall" "unsafe" ) var ( ...
- jasper使用table组件设计复杂的表头
1.1 设计报表模板 1.1.1 新建模板DemoReport5.jrxml,去掉不需要的Band,保留Title,Page Header,Detail 1 , PageFooter.将组件Table ...
- 解决 ThinkPHP5 RCE 在PHP7下,不能使用包含的问题
今天朋友遇到一个ThinkPHP5 _method 的RCE漏洞,环境是:tp5014开启debug,linux,PHP7,日志,Session都写不进去,没办法包含的情况. 思路就是使用反序列化,回 ...
- react报错 TypeError: Cannot read property 'setState' of undefined
代码如下: class test extends Component { constructor(props) { super(props); this.state = { liked: false ...