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

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

#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://www.hqwc.cn/news/502088.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

种花

分情况&#xff1a; 第一盆k种选择&#xff0c;之后全部k-1种选择 每次相乘结果对1e97取模 #include <iostream> #include <vector> #include <algorithm> using namespace std; #define endl \n const int N 1e9 7;int main() {ios::sync_with_stdio(f…

简评ORACLE/MYSQL/PG的逻辑复制

postgresql逻辑复制 ​​​​ &#xff08;https://www.pgconf.asia/JA/2017/wp-content/uploads/sites/2/2017/12/D2-A7-EN.pdf&#xff09; PostgreSQL把所有逻辑解析相关的事情全部放在数据库中的复制槽进行管理&#xff0c;大包大揽。早期版本的逻辑复制支持的还不太好&a…

ICML23 - Synthetic Data for Model Selection

前言 如果你对这篇文章感兴趣&#xff0c;可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」&#xff0c;查看完整博客分类与对应链接。 本文关注的问题为&#xff1a;是否可以使用合成数据&#xff08;Synthetic Data&#xff09;用于模型选择&#xff1f;即不…

LeetCode383. 赎金信(C++)

LeetCode383. 赎金信 题目链接代码 题目链接 https://leetcode.cn/problems/ransom-note/description/ 代码 class Solution { public:bool canConstruct(string ransomNote, string magazine) {int record[26] {0};if(ransomNote.size() > magazine.size()) return fa…

浅析扩散模型与图像生成【应用篇】(四)——Palette

4. Palette: Image-to-Image Diffusion Models 该文提出一种基于扩散模型的通用图像转换&#xff08;Image-to-Image Translation&#xff09;模型——Palette&#xff0c;可用于图像着色&#xff0c;图像修复&#xff0c;图像补全和JPEG图像恢复等多种转换任务。Palette是一种…

【Web自动化测试——代码篇十二】自动化测试模型——数据驱动测试和关键字驱动测试

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

基于springboot+vue的可盈保险合同管理系统

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

python实现常见一元随机变量的概率分布

一. 随机变量 随机变量是一个从样本空间 Ω \Omega Ω到实数空间 R R R的函数&#xff0c;比如随机变量 X X X可以表示投骰子的点数。随机变量一般可以分为两类&#xff1a; 离散型随机变量&#xff1a;随机变量的取值为有限个。连续型随机变量&#xff1a;随机变量的取值是连…

vue-router4 (六) 路由嵌套

应用场景&#xff1a; ①比如京东页面的首页、购物车、我的按钮&#xff0c;可以点击切换到对应的页面&#xff1b; ② 比如 Ant Design左侧这些按钮点击就会切到对应的页面&#xff0c;此时可以把左侧按钮放在父路由中&#xff0c;右侧的子路由 1.路由配置&#xff0c;子路由…

蓝桥杯算法题汇总

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

Docsify部署IIS

什么是Docsify&#xff1f; 一个神奇的文档网站生成器。docsify 可以快速帮你生成文档网站。不同于 GitBook、Hexo 的地方是它不会生成静态的 .html 文件&#xff0c;所有转换工作都是在运行时。如果你想要开始使用它&#xff0c;只需要创建一个 index.html 就可以开始编写文档…

MYSQL--锁机制*

一.对锁机制的大概介绍: 1.大概的来说,MYSQL当中的锁实际上就是合理的管理多个服务器对于同一个共享资源的使用,是计算机协调多个进程或者是线程并发访问某一资源的机制(避免争抢资源的现象发生) 2.在数据库当中,数据是一种可以供许多的用户进行共享使用的资源,如何保证数据并发…