并查集基础,死去的回忆突然攻击我

并查集普及【模板】并查集 - 洛谷

#include<iostream>
#include<cstring>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
#define int long long 
typedef pair<int,int> PII;
#define xx first
#define yy second
const int N=1e5+10;
int n,m,w;
int p[N];
int find(int x){if(p[x]!=x)p[x]=find(p[x]);return p[x];
}
signed main(){ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);cin>>n>>m;for(int i=1;i<N;i++){p[i]=i;}while(m--){int a,b,op;cin>>op;cin>>a>>b;if(op==1){p[find(a)]=find(b);}else {if(find(a)==find(b))puts("Y");else puts("N");}}
}

并查集的运用搭配购买 - 洛谷

问题分析:

这个问题其实是一个背包问题的进阶版,但是因为做题的过程中使用了并查集的算法,所以也归为并查集的进阶,对于这只能够题目来说,咱们只要看到了表示买第 ui​ 朵云就必须买第 vi​ 朵云,同理,如果买第 vi​ 朵就必须买第 ui​ 朵。这种你中带我,我中带你的感觉就是并查集的使用了。

细节就不多说了,以后的文章不会在这种细节大意都知道的地方解说。

代码的实现:

#include<iostream>
#include<cstring>
#include<queue>
#include<vector>
#include<algorithm>
using namespace std;
#define int long long 
typedef pair<int,int> PII;
#define xx first
#define yy second
const int N=1e5+10;
int p[N];
struct op{int c,d;
}f[N];
int find(int x ){if(p[x]!=x)p[x]=find(p[x]);return p[x];
}
int n,m,w;
vector<PII> bag;
int dp[N];
signed main(){ios::sync_with_stdio(false);cin.tie(nullptr);cout.tie(nullptr);cin>>n>>m>>w;int res=0;for(int i=1;i<N;i++)p[i]=i;for(int i=1;i<=n;i++){cin>>f[i].c>>f[i].d;}while(m--){int a,b;cin>>a>>b;p[find(a)]=find(b);}   for(int i=1;i<=n;i++){if(p[i]!=i){f[find(i)].c+=f[i].c;f[find(i)].d+=f[i].d;}}for(int i=1;i<=n;i++){if(p[i]==i)bag.push_back({f[i].c,f[i].d});}for(auto i:bag){for(int j=w;j>=i.first;j--){dp[j]=max(dp[j],dp[j-i.first]+i.second);}}cout<<dp[w]<<endl;
}

例题:[NOI2015] 程序自动分析 - 洛谷

代码实现:

#include <iostream>
#include <algorithm>
#include <cstring>
#include <string>
#include <map>
#include <cmath>
#include <vector>
#include <numeric>
#include <unordered_map>
#include <queue>
#include <set>
using namespace std;
typedef pair<int,int> PII;
const int N=5e5+10;
int p[N];
int e,i,j,T,n,idx;
vector<PII> v1,v0;
unordered_map<int,int> mp;
int Get(int x){//这一步是干啥的if(!mp.count(x))mp[x]=++idx;return mp[x];
}
int find(int x){if(p[x]!=x)p[x]=find(p[x]);return p[x];
}
signed main(){cin>>T;while(T--){cin>>n;//initidx=0;for(int i=1;i<N;i++){p[i]=i;}v1.clear();v0.clear();mp.clear();while(n--){cin>>i>>j>>e;i=Get(i);j=Get(j);if(e==1){v1.push_back({i,j});}else {v0.push_back({i,j});}}for(auto it:v1){int a=find(it.first);int b=find(it.second);if(a!=b)p[a]=b;}bool flag=true;for(auto it:v0){int a=find(it.first);int b=find(it.second);if(a==b){flag=false;break;}}if(flag)puts("YES");else puts("NO");}
}

以上就是有关于并查集的题目啦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2822144.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

Mathtype安装时word启动显示“文件未找到:MathPage.WLL”

背景 由于老板布置的临时工作&#xff0c;需要安装Mathtype&#xff0c;但尝试了3个不同的版本后&#xff08;每次都卸载干净了&#xff09;&#xff0c;均未能成功安装&#xff0c;出现的报错3个版本各不相同&#xff1a; ①解压安装过程中失败&#xff08;这个版本不再尝试…

“智慧代码阁”千聊知识店铺成立了

前两天我在千聊上注册了知识店铺“智慧代码阁” 欢迎大家来购买更加精品的代码 点击这里进入知识店铺 非常感谢大家&#xff01;&#xff01;&#xff01; 欢迎来到“智慧代码阁”——您的专属知识宝库&#xff0c;专注于为代码爱好者和专业人士提供前沿、实用、系统的编程知…

C++数据结构与算法——二叉搜索树的属性

C第二阶段——数据结构和算法&#xff0c;之前学过一点点数据结构&#xff0c;当时是基于Python来学习的&#xff0c;现在基于C查漏补缺&#xff0c;尤其是树的部分。这一部分计划一个月&#xff0c;主要利用代码随想录来学习&#xff0c;刷题使用力扣网站&#xff0c;不定时更…

Linux 系统安装/卸载 Nginx教程

优质博文&#xff1a;IT-BLOG-CN 一、安装Nginx 【1】首先通过Nginx官网确定需要安装的版本&#xff0c;如果Linux联网则直接在Linux服务上使用wget命令将Nginx安装包下载到/usr/local/目录下&#xff1a; [rootxxx local]# wget -c http://nginx.org/download/nginx-1.22.1.…

中小企业“数智未来”行动|ZStack Cloud 荣获“推荐方案”奖

2月29日&#xff0c;以“数智未来 共创数字时代新篇章”为主题的中小企业“数智未来”行动在京成功举办&#xff0c;本次活动由中央广播电视总台央视频和中国中小企业协会作为联合观察单位&#xff0c;带来了一系列帮助中小企业成就业务新价值和数智化升级的优秀产品和方案&…

为什么推荐大家学习双拼输入法?

在现代信息技术迅速发展的今天&#xff0c;计算机已经成为人们日常工作生活中不可分割的一部分。而对于大多数人来说&#xff0c;输入法是与计算机打交道最频繁的交互方式之一。在中文输入法中&#xff0c;五笔输入法一直是非常受欢迎的一种输入方式。然而&#xff0c;双拼输入…

基于SSM SpringBoot vue服装物流管理系统

基于SSM SpringBoot vue服装物流管理系统 系统功能 首页 图片轮播 人个中心 登录注册 后台管理: 登录注册 个人中心 货物信息管理 货物入库管理 订单信息管理 商品出库管理 快递追踪管理 用户管理 供应商信息管理 盘点信息管理 管理员管理 开发环境和技术 开发语言&#xf…

常见外设学习以及无线通信频率

常见外设 UART UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff0c;通用异步收发器&#xff09;是一种异步、串行、全双工的通信总线。 UART 有3根线&#xff0c;分别是&#xff1a;发送线&#xff08;TX&#xff09;、接收线&#xff08;RX&#xff…

T3SF:一款功能全面的桌面端技术练习模拟框架

关于T3SF T3SF是一款功能全面的桌面端技术练习模拟框架&#xff0c;该工具针对基于主场景事件列表的各种事件提供了模块化的架构&#xff0c;并包含了针对每一个练习定义的规则集&#xff0c;以及允许为对应平台参数定义参数的配置文件。 该工具的主模块能够执行与其他特定模…

Windows批处理:bat文件学习

目录 第一章、快速了解Windows批处理1.1&#xff09;Windows批处理相关概念介绍1.1.1&#xff09;批处理的起源1.1.2&#xff09;bat文件介绍 1.2&#xff09;Demo1.2.1&#xff09;创建文件添加命令1.2.2&#xff09;bat脚本中的命令解释 第二章、实例2.1&#xff09;点击bat文…

协方差矩阵计算

文章目录 协方差矩阵计算原理python实现 协方差矩阵 协方差矩阵反映了两个随机变量变化时是同向还是反向的&#xff08;相关性&#xff09;。 如果协方差>0&#xff0c;则说明这两个随机变量同向变化。 协方差矩阵<0&#xff0c;则说明是反向变化。 协方差矩阵0&#xf…

WinApp自动化测试之辅助工具介绍

前篇文章中&#xff0c;我们简单介绍了部分WinApp自动化测试脚本常规操作&#xff0c;今天我们来讲剩余的部分。 文件批量上传 文件批量上传和文件单个上传原理是相同的&#xff0c;单个上传直接传入文件路径即可&#xff0c;批量上传需要进入批量上传的文件所在目录&#xf…

今年面试潮,说实话这个开发岗能不能冲?

自打华为 2019 年发布鸿蒙操作系统以来&#xff0c;网上各种声音百家争鸣。尤其是 2023 年发布会公布的鸿蒙 4.0 宣称不再支持 Android&#xff0c;更激烈的讨论随之而来。 当下移动端两大巨头瓜分了绝大部分市场&#xff1a; iOS 是闭源的&#xff0c;只有唯一的一家厂商&am…

计算机网络_2.1 物理层概述

2.1 物理层概述 一、物理层要实现的功能二、物理层接口特性 B站 深入浅出计算机网络 2.1物理层概述 一、物理层要实现的功能 物理层要实现的功能就是在各种传输媒体上传输比特0和1&#xff0c;进而给上面的数据链路层提供透明传输比特流的服务。 数据链路层“看不见”&#xff…

MySQL 存储过程批量插入总结

功能需求背景&#xff1a;今天接到产品经理核心业务表的数据压测功能&#xff0c;让我向核心业务表插入百万级的业务量数据&#xff0c;我首先想到的办法就是存储过程实现数据的批量 。 由于无法提供核心业务表&#xff0c;本文仅仅提供我刚刚自己创建的表bds_base_user 表做相…

vite打包构建时环境变量(env)生成可配置的js文件

现实需求 在vite开发过程中&#xff0c;一些变量可以放在.env&#xff08;基础公共部分变量&#xff09;.env.dev&#xff08;开发环境&#xff09;、.env.production&#xff08;生产环境&#xff09;中管理&#xff0c;通常分成开发和生产两个不同的配置文件管理&#xff0c…

蓝桥杯算法题汇总

一.线性表&#xff1a;链式 例题&#xff1a;旋转链表 二.栈&#xff1a; 例题&#xff1a;行星碰撞问题 三.队列 三.数组和矩阵 例题&#xff1a;

SCP命令行向服务器端上传文件或下载文件

环境要求 使用scp&#xff08;Secure Copy Protocol&#xff09;命令在本地和远程系统之间安全地复制文件和目录&#xff0c;需要满足以下环境要求&#xff1a; SSH服务&#xff1a;scp依赖于SSH&#xff08;Secure Shell&#xff09;协议来安全地传输文件。因此&#xff0c;…

2.2_2 进程调度的时机、切换与过程、调度方式

文章目录 2.2_2 进程调度的时机、切换与过程、调度方式&#xff08;一&#xff09;进程调度的时机&#xff08;二&#xff09;进程调度的方式&#xff08;三&#xff09;进程的切换与过程 总结 2.2_2 进程调度的时机、切换与过程、调度方式 &#xff08;一&#xff09;进程调度…

作业1-224——P1927 防护伞

思路 遍历一下找到两点间的最远距离&#xff0c;直接公式算结果&#xff0c;控制输出位数 参考代码 #include<iostream> #include<iomanip> #include<cmath> using namespace std; int main() { int n; cin>>n; int x[n],y[n]; do…