并查集 - 2

>1 樱子的爱好

题目

https://codeforces.com/contest/2008/problem/D

思路

5 4 1 3 2
10011

为例
i = 1, p1 = 5, s5 = 1--> i = 5, p5 = 2, s2 = 0 --> i = 2, p2 = 4, s4 = 1 --> i = 4, p4 = 3, s3 = 0 --> i = 3, p3 = 1, s1 = 1

无论i = 1还是5, 2, 4, 3,最终黑色的个数都一样,因为会重复这个过程,所以它们就在一根树枝上,可以把1看作根结点,后面的数字标记一下,表示已经操作过了,就能跳过,将它们的父亲都设为1, 最终遍历就直接输出父亲节点的黑色数量

代码

#include <iostream>
#include <vector>
#include <string>using namespace std;int main()
{int t;cin >> t;while (t--){int n;cin >> n;vector<int> p(n+1, 0), a(n+1, 0), goal(n+1, 0), cnt(n+1, 0), nu(n+1, 0);for (int i = 1; i <= n; i++) cin >> p[i], a[i] = p[i];string s;cin >> s;for (int i = 0; i < n; i++){if (s[i] == '0') nu[i + 1]++;}int count = 0;for (int i = 1; i <= n; i++){if (!goal[i]){int num = p[i];cnt[i] += nu[num];goal[num] = 1;count++;int res = p[num];p[num] = i;while (num != i){num = res;cnt[i] += nu[num];goal[num] = 1;count++;res = p[num];p[num] = i;}if (count == n) break;}}for (int i = 1; i <= n; i++) cout << cnt[p[a[i]]] << ' ';cout << endl;}
}

>2 小诚因为金铲铲D不到牌破产啦

题目

http://oj.whpu.tech:7788/problem/299

代码

#include <iostream>
#include <string>using namespace std;
const int N = 2e5 + 10;
int p[N], a[N], b[N];int findd(int x);
void uniona(int x, int y);
int main()
{int n, m; cin >> n >> m;for (int i = 1; i <= n; i++) cin >> a[i], p[i] = i;for (int i = 1; i <= n; i++) cin >> b[i];while (m--){int x, y; cin >> x >> y;int p1 = findd(x), p2 = findd(y);if (p1 != p2) uniona(p1, p2);}for (int i = 1; i <= n; i++){if (i == p[i]){if (a[i] != b[i]){cout << "No" << endl;return 0;}}}cout << "Yes" << endl;
}
int findd(int x)
{int a = x;while (a != p[a]) a = p[a];int b = x;while (b != a){int c = p[b];p[b] = a;b = c;}return a;
}
void uniona(int x, int y)
{p[x] = y;a[y] += a[x];b[y] += b[x];
}

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

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

相关文章

信息安全概论复习-2

计算机系统的可靠性和可用性 系统可靠性定义及测量方法硬件的可靠性和完美性软件的可靠性和完美性容错技术和系统,冗余技术冗余类型,4种,硬件软件时间信息容错系统的工作方式 1、自动检查 2、自动切换 3、自动修复 容错系统和部件--系统级容错、部件级容错--就是备用系统、部…

初探RocketMQ消息消费原理(一)

目录一. 消息消费概述二、消费队列负载机制与重平衡1.1 消费队列负载机制与重平衡1.2 并发消费模型1.3 消息消费进度反馈机制 一. 消息消费概述 消息消费以组的模式开展,一个消费组可以包含多个消费者,每个消费组可以订阅多个主题(一般来说不建议),消费组之间有集群模式和…

rust中使用opencv-cuda和yolov

最近公司有个要识别的项目需要计算机识别,于是就找到了opencv来进行,opencv的cuda版本需要自己来进行编译需要去opencv官网下载,我下载的版本是opencv4.10 https://github.com/opencv/opencv/archive/refs/tags/4.10.0.zip 还有需要opencv_contrib-4.10.0和cmake下载 下载之…

rust中使用opencv和cuda

最近公司有个要识别的项目需要计算机识别,于是就找到了opencv来进行,opencv的cuda版本需要自己来进行编译需要去opencv官网下载,我下载的版本是opencv4.10 https://github.com/opencv/opencv/archive/refs/tags/4.10.0.zip 还有需要opencv_contrib-4.10.0和cmake下载 下载之…

视效升级如此简单?零代码实现炫酷管道效果

三维场景视效升级 通过添加管道效果,可以提升整个三维场景的辨识度,尤其是在需要表现水流流向、能源运输、移动路径等场景中。通过设置管道效果,不仅能够清晰表达设计思路,还能为整个场景增添一抹亮色。下面我们就一起来看一下,如何在山海鲸可视化中添加管道效果。1. 管道…

CudaSPONGE之Python接口

本文介绍了高性能GPU分子动力学模拟软件CudaSPONGE的Python API接口,通过官方开发的prips插件,使得我们可以在Python框架下很方便的开发一些分子动力学模拟的Force Wrapper,例如Meta Dynamics中就有很多可以外界的工具,非常方便开发者的二次开发,同时又能够兼顾到性能。技…

行业专家推荐2024年CRM系统Top 5

商业环境瞬息万变,客户关系管理(CRM)系统帮助企业更好地连接客户、理解客户、服务客户,已成为企业不可或缺的战略资产。 企业在选择CRM系统时,应做好充分的市场调查。为了帮助企业更好地把握市场机遇,提升客户体验,本文根据搜索结果和行业专家的评价,推荐2024年各方面排…

论文解读《Neural Cleanse: Identifying and Mitigating Backdoor Attacks in Neural Networks》

发表时间:2019期刊会议:IEEE Symposium on Security and Privacy (S&P)论文单位:UC Santa Barbara论文作者:Bolun Wang, Yuanshun Yao, Shawn Shan, Huiying Li, Bimal Viswanath, Haitao Zheng, Ben Y. Zhao方向分类:Backdoor Attack论文链接开源代码摘要 深度神经网…

TIA下梯形图做单灰仓脉冲阀喷吹控制练习

假设有这样一个应用需求,一个会仓,上面有10个脉冲阀,按照顺序进行喷吹,每个阀喷吹后,间隔一定时间下一个阀喷吹,可以设置总的喷吹次数,达到次数后停止喷吹,如果总喷吹次数设置为0,那么就一直喷吹下去。如果点击了开始按钮开始喷吹动作,再次点击开始按钮,不会重新开始…

如何提升日用品行业生产效率?数字化管理成关键

在日用品行业,快速反应和高效生产是生存之道。从采购、生产到物流配送,每一个环节都充满挑战。市场需求瞬息万变,交付周期日益缩短,任何一个环节的滞后都可能导致整个供应链的断裂。如何在繁忙的工作中保持高效协作、精准调度,并确保及时交付,是许多企业迫切需要解决的问…

从需求到交付,如何有效控制客户的预期?

在现代企业管理中,客户预期的管理是项目成功的关键因素之一。无论是软件开发、产品设计还是咨询服务,项目能否成功完成往往取决于客户对于项目成果的预期。如果没有正确的预期管理,客户的需求与项目交付之间就容易产生偏差,进而影响客户的满意度和项目的最终成果。因此,如…

PIDNet-PagFM-特征融合

import torch.nn as nn import torch import torch.nn.functional as F class PagFM(nn.Module):# 选择性特征融合 直接融合细节和低频上下文 容易导致细节丢失def __init__(self, in_channels, mid_channels, after_relu=False, with_channel=False, BatchNorm=nn.BatchNorm2…