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

1195口袋的天空——并查集+贪心——洛谷

题目

P1195 口袋的天空 - 洛谷 | 计算机科学教育新生态

分析

:连在一起:并查集

代价最小:贪心

集合树==棉花糖数:合并(涉及代价)

从最小代价开始判断是否合并。

代价的存储用结构体。

无非是玩数据存储和数据处理

代码 

#include<bits/stdc++.h>
using namespace std;

//连在一起,并查集
// 代价最小-贪心-
const int N = 1e5+10;
int p[N];
int cnt[N];
struct arr{
	int x, y;
	int l;
	bool operator <(const arr &W) const {
		return l < W.l;
	}
}A[N];

void init() {
	for(int i = 1; i < N; i ++) 
		p[i] = i;
}

int find(int x) {
	if(p[x]!=x) p[x] = find(p[x]);
	return p[x];
} 

int main() {
	init();
	int n, m, k;
	cin >> n >> m >> k;
	int num = n-k;
	for(int i = 0; i < m; i ++) {
		int x, y, l;
		cin >> x >> y >> l;
		A[i].x = x, A[i].y = y, A[i].l = l;
	}
	sort(A,A+m);
	if(n<k) {
		puts("No Answer");
	}
	int ans = 0;
	for(int i = 0,j = 0; i < m && j < num; i ++) {
		int a = find(A[i].x), b = find(A[i].y);
		if(a==b) continue;
		j ++;
		p[a] = b;
		cnt[b] += cnt[a] + A[i].l; //ans += A[i].l;
	}
//	int ans = 0;
	for(int i = 1; i <= n; i ++) {
		if(find(i)==i) ans += cnt[i];
	}
	cout << ans << endl;
	return 0;
}
#include<bits/stdc++.h>
using namespace std;

//连在一起,并查集
// 代价最小-贪心-
const int N = 1e5+10;
int p[N];
int cnt[N]; // 用不上
struct arr{
	int x, y;
	int l;
	bool operator <(const arr &W) const {
		return l < W.l;
	}
}A[N];

void init() {
	for(int i = 1; i < N; i ++) 
		p[i] = i;
}

int find(int x) {
	if(p[x]!=x) p[x] = find(p[x]);
	return p[x];
} 

int main() {
	init();
	int n, m, k;
	cin >> n >> m >> k;
	int num = n-k;
	for(int i = 0; i < m; i ++) {
		int x, y, l;
		cin >> x >> y >> l;
		A[i].x = x, A[i].y = y, A[i].l = l;
	}
	sort(A,A+m);
	if(n<k) {
		puts("No Answer");
	}
	int ans = 0;
	for(int i = 0,j = 0; i < m && j < num; i ++) {
		int a = find(A[i].x), b = find(A[i].y);
		if(a==b) continue;
		j ++;
		p[a] = b;
		cnt[b] += A[i].l; ans += A[i].l;
	}
//	int ans = 0;
//	for(int i = 1; i <= n; i ++) {
//		if(find(i)==i) ans += cnt[i];
//	}
	cout << ans << endl;
	return 0;
}


http://www.kler.cn/a/428837.html

相关文章:

  • “深入浅出”系列之C++:(10)nlohmann Json库
  • 深度学习常见术语解释
  • 大模型GUI系列论文阅读 DAY2续:《一个具备规划、长上下文理解和程序合成能力的真实世界Web代理》
  • python3GUI--仿崩坏三二次元登录页面(附下载地址) By:PyQt5
  • 3 前端(中):JavaScript
  • Spring Security(maven项目) 3.0.2.5版本中改
  • Java 基础之 JDBC:连接数据库的强大工具
  • [学习笔记]从Flexbox到Grid布局的实战指南
  • C# 实现 OPCClient(使用 OPCDAAuto.dll)
  • E217 PHP+MYSQL+LW+摄影工作室网站的设计与实现 源代码 配置文档 全套资料
  • Ubuntu 24上设置DNS服务器
  • 神经网络入门实战:(十八)Argmax函数的详细介绍,可以用来计算模型训练准确率
  • Java的Stream流:文件处理、排序与串并行流的全面指南
  • 智能方法求解-圆环内传感器节点最大最小距离分布
  • 后端返回前端的数据量过大解决方案
  • 最新基于R语言森林生态系统结构、功能与稳定性分析与可视化实践高级应用
  • 低级爬虫实现-记录HCIP云架构考试
  • 数字图像处理(15):图像平移
  • Fiddler 5.21.0 使用指南:过滤浏览器HTTP(S)流量下(四)
  • 基于gitlab API刷新MR的commit的指定status
  • 【Unity高级】如何动态调整物体透明度
  • Linux-Regmap实验
  • Go database/sql包源码分析
  • ShardingSphere 数据库中间件
  • k8s 为什么需要Pod?
  • 高级java每日一道面试题-2024年12月05日-JVM篇-什么是TLAB?