家庭房产(PTA)

复制代码
#include <iostream>
#include <vector>
#include <set>
#include <algorithm>

using namespace std;

//10
//6666 5551 5552 1 7777 1 100
//1234 5678 9012 1 0002 2 300
//8888 - 1 - 1 0 1 1000
//2468 0001 0004 1 2222 1 500
//7777 6666 - 1 0 2 300
//3721 - 1 - 1 1 2333 2 150
//9012 - 1 - 1 3 1236 1235 1234 1 100
//1235 5678 9012 0 1 50
//2222 1236 2468 2 6661 6662 1 300
//2333 - 1 3721 3 6661 6662 6663 1 100

set<int> s[1000];
double arr1[1000] = { 0 };
double arr2[1000] = { 0 };

int main() {
	int N;
	cin >> N;
	for (int i = 0; i < N; i++) {
		int a;
		for (int j = 0; j < 3; j++) {
			cin >> a;
			if (a != -1) s[i].insert(a);
		}
		cin >> a;
		for (int j = 0, b; j < a; j++) {
			cin >> b;
			s[i].insert(b);
		}
		cin >> arr1[i] >> arr2[i];
		set<int> r;
		for (auto x : s[i]) {
			for (int k = 0; k <= i; k++) {
				if (s[k].count(x)) {
					r.insert(k);
				}
			}
		}
		int t = *r.begin();
		r.erase(r.begin());
		if (r.size()) {
			for (auto l : r) {
				for (auto p : s[l]) {
					s[t].insert(p);
				}
				arr1[t] += arr1[l];
				arr2[t] += arr2[l];
				s[l].clear();
			}
		}
		
	}

	//创建一个下标数组,用它排序
	vector<int> ind;
	for (int i = 0; i < N; i++) {
		if (!s[i].empty()) {
			ind.push_back(i);
			arr1[i] /= s[i].size();
			arr2[i] /= s[i].size();
		}
	}
	sort(ind.begin(), ind.end(), [&](int i, int j) -> bool {
			if (arr2[i] != arr2[j]) return arr2[i] > arr2[j];
			return (*s[i].begin()) < (*s[j].begin());
	});
	cout << ind.size() << endl;
	for (int i = 0, I = ind.size(); i < I; i++) {
		printf("%04d %zd %.3lf %.3lf\n", *s[ind[i]].begin(), s[ind[i]].size(),                 
               arr1[ind[i]], arr2[ind[i]]);
	}
	return 0;
}
相关推荐
龙山云仓11 分钟前
No131:AI中国故事-对话荀子——性恶论与AI约束:礼法并用、化性起伪与算法治理
大数据·人工智能·深度学习·算法·机器学习
夏鹏今天学习了吗19 分钟前
【LeetCode热题100(90/100)】编辑距离
算法·leetcode·职场和发展
芒克芒克1 小时前
数组去重进阶:一次遍历实现最多保留指定个数重复元素(O(n)时间+O(1)空间)
数据结构·算法
星火开发设计1 小时前
二维数组:矩阵存储与多维数组的内存布局
开发语言·c++·人工智能·算法·矩阵·函数·知识
夜勤月1 小时前
彻底终结内存泄漏与悬挂指针:深度实战 C++ 智能指针底层原理与自定义内存池,打造稳如泰山的系统基石
开发语言·c++
Fcy6481 小时前
⽤哈希表封装unordered_map和unordered_set(C++模拟实现)
数据结构·c++·散列表
CSDN_RTKLIB1 小时前
右值引用一个误区
c++
丨康有为丨1 小时前
算法时间复杂度和空间复杂度
算法
HarmonLTS2 小时前
Python人工智能深度开发:技术体系、核心实践与工程化落地
开发语言·人工智能·python·算法
a程序小傲2 小时前
京东Java面试被问:RPC调用的熔断降级和自适应限流
java·开发语言·算法·面试·职场和发展·rpc·边缘计算