L2-007. 家庭房产
L2-007. 家庭房产
题目链接:https://www.patest.cn/contests/gplt/L2-007
并查集
初学,看这题的时候完全没有什么好的想法,参考了@yinzm的blog用BFS做了一遍,错了三个测试点,找了一下午没找出来,另寻他法。看到了并查集这个概念,做了一两题稍微掌握了一下,尝试做这题。
代码如下:
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<cmath>
#define EPS 1e-8
#define N 10000
using namespace std;
struct node{
int house,area;
};
struct res{
int num;
int people;
int house;
int area;
double rh,ra;
};
res r[];
int k;
node a[N];
int pre[N];
bool mark[N];
void Make(){
for(int i=;i<N;++i)pre[i]=i;
}
int Find(int x){
if(x!=pre[x])
pre[x]=Find(pre[x]);
return pre[x];
}
void uion(int x,int y){
int k1=Find(x),k2=Find(y);
k1<k2?pre[k2]=k1:pre[k1]=k2;
}
bool compare(res x,res y){
if(fabs(x.ra-y.ra)<EPS)return x.num<y.num;
else return x.ra>y.ra;
}
int main(void){
freopen("in.txt","r",stdin);
int n;
scanf("%d",&n);
Make();
for(int i=;i<n;++i){
int me,father,mother,num,kid[],house,area;
scanf("%d%d%d%d",&me,&father,&mother,&num);
mark[me]=;
if(father!=-){
uion(me,father);
mark[father]=;
}
if(mother!=-){
uion(me,mother);
mark[mother]=;
}
for(int i=;i<num;++i){
scanf("%d",&kid[i]);
mark[kid[i]]=;
uion(me,kid[i]);
}
scanf("%d%d",&house,&area);
a[me].house=house;
a[me].area=area;
}
for(int i=;i<N;++i)
Find(i);
int p;
for(int i=;i<N;++i){
if(mark[i]){
if(k==){
r[k].num=pre[i];
r[k].people++;
r[k].house=a[i].house;
r[k].area=a[i].area;
k++;
}else{
bool flag=true;
for(p=;p<k;++p){
if(r[p].num==pre[i]){
flag=false;
break;
}
}
if(flag){
r[k].num=pre[i];
r[k].people++;
r[k].house=a[i].house;
r[k].area=a[i].area;
k++;
}else{
r[p].people++;
r[p].house+=a[i].house;
r[p].area+=a[i].area;
}
}
}
}
for(int i=;i<k;++i){
r[i].rh=r[i].house*1.0/r[i].people;
r[i].ra=r[i].area*1.0/r[i].people;
}
printf("%d\n",k);
sort(r,r+k,compare);
for(int i=;i<k;++i)
printf("%04d %d %.3lf %.3lf\n",r[i].num,r[i].people,r[i].rh,r[i].ra);
return ;
}
L2-007. 家庭房产的更多相关文章
- 团体程序设计天梯赛-练习集L2-007. 家庭房产
L2-007. 家庭房产 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定每个人的家庭成员和其自己名下的房产,请你统计出每个 ...
- L2-007 家庭房产 (25 分)
L2-007 家庭房产 (25 分) 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(≤),随后N行,每行按下 ...
- L2-007. 家庭房产(并查集)*
L2-007. 家庭房产 参考博客 #include <iostream> #include <cstdio> #include <cstring> #includ ...
- 天梯赛 L2-007. (并查集) 家庭房产
题目链接 题目描述 给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(<=1000),随后N行,每行按下列格式 ...
- PATL2-007. 家庭房产-并查集
L2-007. 家庭房产 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 陈越 给定每个人的家庭成员和其自己名下的房产,请你统计出每个 ...
- pat 团体天梯赛 L2-007. 家庭房产
L2-007. 家庭房产 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产 ...
- L2-007 家庭房产 (25 分) (并查集)
链接:https://pintia.cn/problem-sets/994805046380707840/problems/994805068539215872 题目: 给定每个人的家庭成员和其自己名 ...
- PAT L2-007 家庭房产
https://pintia.cn/problem-sets/994805046380707840/problems/994805068539215872 给定每个人的家庭成员和其自己名下的房产,请你 ...
- pat 团体赛练习题集 L2-007. 家庭房产
给定每个人的家庭成员和其自己名下的房产,请你统计出每个家庭的人口数.人均房产面积及房产套数. 输入格式: 输入第一行给出一个正整数N(<=1000),随后N行,每行按下列格式给出一个人的房产: ...
随机推荐
- RHEL账号总结一:账号的分类
账号是一种用来记录单个用户或者多个用户的数据.RHEL中每一个合法的用户都必须拥有账号,才能使用RHEL. 在RHEL上的账号可以分为两类: 用户账号:用来存储单一用户的数据,你也可以使用一个用户账号 ...
- Appium同时运行多个设备
为了提高测试效率,测试需要同时在多个android设备上运行,就需要启动多个appium. 启动appium时,为每个设备设置不同的端口号,并为driver设置该设备的udid.见如下实例,关键是红色 ...
- Hive插数据报错
报错信息: Failed with exception MetaException(message:javax.jdo.JDODataStoreException: Put request faile ...
- ACM北大学习
在两周的学习下,对ACM竞赛有了更深入地了解.学习到了很多知识,见识到了很多高手,目光放得更长远了.最后的比赛,在100多个队伍中,获得第十八的名次,也不负我的学习.
- 加班计时App
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- NGINX----源码阅读一(main函数)
1.ngx_debug_init(); 初始化debug函数,一般为空. 2.ngx_strerror_init(): 将系统错误码+错误信息,以ngx_str_t数组保存. 3.ngx_get_op ...
- 视频编辑SDK---我们只提供API,任你自由设计炫酷的功能
面对相对复杂的视频编辑处理技术,你是否束手无策? 在短视频应用中,有一定技术难度的视频编辑技术中,我们提出了一种全新的解决方法:画板和画笔.短视频处理,用画板和画笔,就够了! 我们设计了极其简单易懂的 ...
- vlc-android1.8.0的全部源代码[包括C语言]
我们基于vlc,整理出了vlc-android1.8.0的全部源代码, 并增加了LibVLC的简单调用, 您只需要7行代码,就可以完成调用,和原生的MediaPlayer类似. 下载地址https:/ ...
- 键盘快速启动工具Launchy的简单使用技巧
打开电脑面对林林总总的图标,找到对应的程序,快速启动显得尤为重要.这样有利于提高我们的效率. 好了,直接上图: 就是这款小巧的工具,界面如上. 接下来介绍这款工具的使用技巧. 1.安装成功后:打开工具 ...
- Mysql登录后看不到数据库
进入数据库后,只能看到information_schema/test这两个库,其他的数据库都看不到,这是权限出了问题. 关闭Mysql /usr/local/mysql/support-files/m ...