链式并查集的应用

牛客周赛39F 小红不想做模拟题

在这里插入图片描述
考虑暴力做法,即 n 2 n^2 n2,这样肯定超时,那么我们考虑如何进行优化,我们猜想是否可以不用每次都对整个子段进行遍历,我们是否可能只遍历其中的一部分,具体是什么部分,对于一段连续的一,我们可以记录其起点能到达的最远点,那么当我们遍历到这个起点时,我们可以直接跳到那个最远的点去,对于序列中的其他点都同理,那么考虑修改,对于当前为 0 0 0 的点,把他修改成 1 1 1 ,那么其最远点也就从当前的位置 i i i 变为了 i + 1 i+1 i+1。这就是链式并查集。

#include <bits/stdc++.h>using namespace std;
const int N = 5e5 + 5;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef array<int, 3> ar;
int mod = 1e9+7;
// const int maxv = 4e6 + 5;
// #define endl "\n"int p[N][2];int find(int x,int pos)
{if(p[x][pos]!=x) return p[x][pos]=find(p[x][pos],pos);return p[x][pos];
}
void solve()
{int n;cin>>n;string a,b;cin>>a>>b;a=" "+a,b=" "+b;for(int i=1;i<=n+1;i++){p[i][0]=i,p[i][1]=i;}int ans=0;for(int i=1;i<=n;i++){if(a[i]=='1'&&b[i]=='1') ans++;if(a[i]=='1') p[i][0]=i+1;if(b[i]=='1') p[i][1]=i+1;}int q;cin>>q;while(q--){char c;int l,r;cin>>c>>l>>r;if(c=='A'){l=find(l,0);while(l<=r){if(find(l,1)!=l) ans++;p[l][0]=l+1;l=find(l,0);}}else{l=find(l,1);while(l<=r){if(find(l,0)!=l) ans++;p[l][1]=l+1;l=find(l,1);}}cout<<ans<<endl;}} int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int t;t=1;// cin>>t;while(t--){solve();}system("pause");return 0;
}

在这里插入图片描述
对于此题同理,我们每次学习后,都将当前点指向下一个点即可,我们跳了多少次,就是有多少个新知识点。

#include <bits/stdc++.h>using namespace std;
const int N = 2e6 + 5;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef array<ll, 3> p3;
int mod = 1e9+7;
const int maxv = 4e6 + 5;
#define endl '\n'int p[N];int find(int x)
{if(p[x]!=x) return p[x]=find(p[x]);return p[x];
}void solve()
{	int n,m;cin>>n>>m;for(int i=1;i<=n+5;i++) p[i]=i;while(m--){int l,r;cin>>l>>r;int cnt=0;for(int i=find(l);i<=r;i=find(i+1)){cnt++;p[i]=find(r+1);}cout<<cnt<<endl;}
}int main()
{ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);int t;t=1;//cin>>t;while(t--){solve();}//system("pause");return 0;
}

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

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

相关文章

tianticms代码审计——伊拉克版本

tianticms代码审计——伊拉克版本 正所谓伊拉克版本必有缺陷 缺陷 前台环境没有搭建好&#xff0c;但前台没啥功能点 环境搭建 使用maven阿里源进行打包即可&#xff0c;全文搜索jdbc修改三处配置文件下的数据库连接&#xff0c;数据库文件在 tianti-modules/tianti-module-…

金三银四面试题(十四):Java基础问题(5)

这部分面试题多用于面试的热身运动&#xff0c;对很多找实习和准备毕业找工作的小伙伴至关重要。 避免序列化 可以使用transient 关键字修饰不想进行序列化的变量。 transient 关键字的作用是&#xff1a;阻止实例中那些用此关键字修饰的变量序列化&#xff1b;当对象被反序列…

机器学习模型——关联规则

目录 关联规则 - 基本概念 关联规则的挖掘步骤: Apriori算法 Apriori算法简介&#xff1a; Apriori算法举例&#xff1a; Apriori算法优缺点&#xff1a; Apriori算法应用 FP-growth算法&#xff1a; FP-growth算法简介&#xff1a; FP-growth的数据结构&#xff1a; …

LeetCode初级算法书Java题解日常更新

LeetCode初级算法高效题解&#xff08;含思路注释&#xff09; 文章目录 LeetCode初级算法高效题解&#xff08;含思路注释&#xff09;前言一、数组1.删除排序数组中的重复项2.买卖股票的最佳时机 II3.旋转数组4.存在重复元素 总结 前言 决定用四个月过一下算法 一、数组 1.…

基于Spring Boot的入职匹配推荐系统设计与实现

基于Spring Boot的入职匹配推荐系统设计与实现 开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 管理员登录界面&#xff0c;登录成功后进入到系统操…

Deformable Convolutional Networks论文阅读

Deformable Convolutional Networks论文阅读 Abstract1. Introduction2. Deformable Convolutional Networks2.1. Deformable Convolution2.2. Deformable RoI Pooling 总结 文章信息&#xff1a; 原文链接&#xff1a;https://arxiv.org/abs/1703.06211 源代码&#xff1a;htt…

移动平台相关(安卓)

目录 安卓开发 Unity打包安卓 ​编辑​编辑 BuildSettings PlayerSettings OtherSettings 身份证明 配置 脚本编译 优化 PublishingSettings 调试 ReMote Android Logcat AndroidStudio的调试 Java语法 ​编辑​编辑​编辑 变量 运算符 ​编辑​编辑​编辑​…

【随笔】Git 基础篇 -- 分支与合并 git rebase(十)

&#x1f48c; 所属专栏&#xff1a;【Git】 &#x1f600; 作  者&#xff1a;我是夜阑的狗&#x1f436; &#x1f680; 个人简介&#xff1a;一个正在努力学技术的CV工程师&#xff0c;专注基础和实战分享 &#xff0c;欢迎咨询&#xff01; &#x1f496; 欢迎大…

Vue3从入门到实战:路由知识点

本人在B站上关于vue3的尚硅谷的课程&#xff0c;以下是整理一些笔记。 1.两个知识点 1.路由组件通常存放在pages 或 views文件夹&#xff0c;一般组件通常存放在components文件夹。 组件可以分为&#xff1a; 1. 一般组件&#xff1a;亲手写标签出来的 2. 路由组件&#…

【第十二篇】使用BurpSuite实现CSRF(实战案例)

CSRF存在前提:简单的身份验证只能保证请求是发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的 业务场景:新增、删除、收藏、编辑、保存使用Burp发现CSRF漏洞的过程如下。 1、如图,存在修改邮箱的功能点如下: 2、修改邮箱的流量包,此时邮箱已被修改: 思路:是…

【拓扑的基】示例及详解

集合X的某拓扑的一个基是X的子集的一个族(其成员称为基元素)&#xff0c;满足条件&#xff1a; 1. 2. 由基生成拓扑 由生成的拓扑(满足以上两个条件&#xff09; 等价描述&#xff1a; 由所有可表示为的某些成员的井的那些集合组成 例1: 证明&#xff1a;由生成的族确实是拓扑…

vue2 父子组件通讯

父传子 父组件&#xff1a;app.vue <template><div>app 父组件<!-- 2.动态绑定定义的数据 --><LiCount :title"mytitle"></LiCount></div> </template><script> import LiCount from "./components/LiCount.…