当前位置: 首页 > news >正文

如何制作一个好网站seo专业技术培训

如何制作一个好网站,seo专业技术培训,公司装修预算表,cs5怎么做网站题目 题目大意 共有n个户主,每个户主的房产按照“ 户主id 父亲id 母亲id 孩子个数 孩子的id 房产数 房产面积 ”的格式给出。如果父亲或母亲不存在,值为-1。每个户主及其父亲母亲孩子可以构成一个家庭,不同户主如果有相同的家人,…

题目

题目大意

共有n个户主,每个户主的房产按照“ 户主id 父亲id 母亲id 孩子个数 孩子的id 房产数 房产面积 ”的格式给出。如果父亲或母亲不存在,值为-1。每个户主及其父亲母亲孩子可以构成一个家庭,不同户主如果有相同的家人,那么就可以将两家联系起来组成一个大家庭。要求输出家庭数和家庭id(取家庭中的最小id),平均房产数,平均房产面积。输出按照平均房产面积从大到小排序,如果相同,按id从小到大排序。

思路

从一堆人中组团并求团的个数,并查集。由题可知,户主母亲父亲孩子不管是谁的id都是等价的,它们的共同祖先(家庭id)就是这群人中的最小id(题目中规定的)。每个家庭中的人可以合并,不同家庭中的人也可合并,合并的条件就是看两个人的家庭id是否相同以及一个人是否存在于两个家庭中。pre[]数组即记录每个人对应的家庭id;find()数组找到根节点,即其所属最大家庭的id;combine()合并两个人或集合;init()初始化,完成并查集的建立。另外还需要记录每个人对应的家庭成员数、房产数、房产大小,只有根节点对应的值才有效。

代码

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;int n;
int pre[10000];  // 并查集,记录前驱节点,为家庭id的最小值
vector<int> num(10000, 1);  // 家庭成员数,初始化为1
int amount[10000] = {0};  // 房产数
int area[10000] = {0};  // 房产大小int find(int a){if (pre[a] == a){return a;}else{return pre[a] = find(pre[a]);}
}  // 找某元素的根节点void combine(int a, int b){int root_a = find(a);int root_b = find(b);if (root_a == root_b){return;}if (root_a < root_b){pre[root_b] = root_a;num[root_a] += num[root_b];amount[root_a] += amount[root_b];area[root_a] += area[root_b];}else{pre[root_a] = root_b;num[root_b] += num[root_a];amount[root_b] += amount[root_a];area[root_b] += area[root_a];}
}  // 合并两个不同的集合void init(){cin >> n;for (int i = 0; i < 10000; i++){pre[i] = i;}  // 初始化pre数组for (int i = 0; i < n; i++){int id, f, m, k, amounts, areas;vector<int> p;cin >> id >> f >> m >> k;p.push_back(id);if (f != -1) p.push_back(f);if (m != -1) p.push_back(m);for (int j = 0; j < k; j++){int child;cin >> child;p.push_back(child);}cin >> amounts >> areas;sort(p.begin(), p.end());for (int j = 0; j < (int)p.size(); j++){combine(p[j], p[0]);}  // 合并每一个家庭成员int root = find(id);amount[root] += amounts;area[root] += areas;  // 累加到一个家庭中的根节点}
}struct family{int id;int total;double avg_amount;double avg_area;
};bool cmp(family x, family y){if (x.avg_area == y.avg_area){return x.id < y.id;}return x.avg_area > y.avg_area;
}int main(){init();vector<family> res;for (int i = 0; i < 10000; i++){if (pre[i] == i && (amount[i] > 0 || area[i] > 0)){res.push_back({i, num[i], amount[i] * 1.0 / num[i], area[i] * 1.0 / num[i]});}}sort(res.begin(), res.end(), cmp);cout << (int)res.size() << endl;for (int i = 0; i < (int)res.size(); i++){printf("%04d %d %.3lf %.3lf\n", res[i].id, res[i].total, res[i].avg_amount, res[i].avg_area);}return 0;
}

http://www.dinnco.com/news/81282.html

相关文章:

  • 做网站4000-262-263关键词优化推广公司
  • 利用html做博客网站软文网站
  • 视差滚动效果网站中国万网域名注册官网
  • 宜昌网站建设排名优化怎么做
  • 网站策划ppt推广关键词排名查询
  • 导购网站建设惠州seo推广公司
  • 电子购物网站开发公司seo比较好的优化方法
  • c 网站开发工程师招聘抖音优化排名
  • 公众号开发网站建站网站
  • 做针织衫的网站百度指数官方版
  • 一个网站只有一个核心关键词seo工具包括
  • 做电影网站怎么批量去水印买链接网
  • 别人在百度冒用公司旗号做网站seo国外英文论坛
  • 上海定制网站开发营销推广网址怎么创建
  • 网站定制化百度自动搜索关键词软件
  • 做网销做什么网站品牌网站建设公司
  • ps网站设计怎么做成都百度网站排名优化
  • 可以做淘宝店铺开关灯网站百度文库官网
  • 江苏省建设招标网站排名优化seo公司
  • 高品质网站欣赏今天
  • cent wordpress阿里云关键词排名优化软件
  • 教育培训机构怎么建设网站外链购买
  • 如何选择网站建设百度网站的域名地址
  • 帮一个企业做网站流程国际时事新闻2022最新
  • 清溪做网站宁德市人社局官网
  • 北京网站建设套餐关键词优化的策略有哪些
  • 手机网站建设czyzj十大免费软文推广平台
  • 在百度上怎么建网站广州关键词快速排名
  • 静态网站 价格深圳小程序开发公司
  • wordpress 相册主题株洲seo优化