首页 > 其他分享 >cf566D Restructing Company

cf566D Restructing Company

时间:2025-01-14 21:32:56浏览次数:1  
标签:cf566D int Company ne Restructing fa next find op

给定数组a[n],初始时a[i]=i,有q次操作:
操作1、1 x y,表示合并x和y
操作2、2 x y,表示合并区间[x,y]
操作3、3 x y,表示询问x和y是否在同一个集合
1<=n<=2E5; 1<=q<=5E5

分析:可以用set+并查集来做,这里用区间并查集来做,在普通并查集的基础上增加ne变量,来维护下一个没合并的位置,用于操作2时快速跳过已合并的点。

#include <bits/stdc++.h>
using i64 = long long;

const int N = 200005;
int n, q, fa[N], ne[N];

int find(int x) {
   return x == fa[x] ? x : fa[x] = find(fa[x]);
}
int next(int x) {
   return x == ne[x] ? x : ne[x] = next(ne[x]);
}

void join(int x, int y) {
   x = find(x);
   y = find(y);
   if (x != y) {
      fa[x] = y;
   }
}

void solve() {
   int n, q;
   std::cin >> n >> q;
   for (int i = 1; i <= n; i++) {
      fa[i] = ne[i] = i;
   }
   for (int i = 0; i < q; i++) {
      int op, x, y;
      std::cin >> op >> x >> y;
      if (op == 1) {
         join(x, y);
      } else if (op == 2) {
         while (x < y) {
            x = next(x);
            if (x < y) {
               join(x, y);
               ne[x] += 1;
            }
         }
      } else if (op == 3) {
         if (find(x) == find(y)) {
            std::cout << "YES\n";
         } else {
            std::cout << "NO\n";
         }
      }
   }
}

int main() {
   std::cin.tie(0)->sync_with_stdio(0);
   int t = 1;
   while (t--) solve();
   return 0;
}

标签:cf566D,int,Company,ne,Restructing,fa,next,find,op
From: https://www.cnblogs.com/chenfy27/p/18671738

相关文章

  • 6 MM模块-公司间STO(Inter-Company Stock Transfer Order)条件类型P101取供货工厂的成
    用户需求:请教下如果希望直接取供应工厂的成本价作为STO的定价应该怎么设置?需求分析:公司间STO的条件类型ConditonType需要取STO供应工厂(SupplyingPlant)对应的成本价(财务发布的标准价RunCostEstimate). 情形1:如果物料是外购件(采购类型-F),财务CK11N或CK40NRunCost......
  • 2023牛客暑期多校训练营2 B Link with Railway Company
    ProblemDescription给你一个\(n\)个节点的树状铁路网络,维护一条边每天需要花费\(c_i\)代价。现在有\(m\)条从\(a_i\)到\(b_i\),每天的盈利为\(x_i\),维护花费为\(y_i\)的路线可以运营。你可以选择一部分路线运营,求每日的最大收益。Input第一行输入两个整数\(n,......
  • 以传入的companyIds作为左连接主表
    <selectid="getUserDatas"resultType="com.shsajt.common.dto.UserDataWorkDTO">SELECTtemp.user_id,ifnull(tempwap.count,0)ascountfrom( <iftest="userIds!=nulla......
  • poj 1416 Shredding Company
    1416--ShreddingCompany(poj.org)#include<iostream>#include<cstring>usingnamespacestd;charnum[10];intt,max_cnt,max_sum,shred_cnt,ans[10],tmp_ans[10];//目标,最大值个数,最大值,切割次数,最后答案,临时答案voidDFS(intbegin,intnow_sum,intcnt){//切的位......
  • mybatis错误:Parameter 'companyName' not found. Available parameters are [arg3, ar
    问题:mybatis.binding.BindingException:Parameter'companyName’notfound.Availableparametersare[arg3,arg2解决:原因是DAO层传入参数mapper无法识别,只需要在在DAO中的方法中前加入@Param(“xxx”)即可,在mapper.xml中使用xxx作为传参.intselectBy4Params(Stringco......
  • 1842_emacs使用company-irony实现C语言的自动补全
    Grey全部学习内容汇总:GitHub-GreyZhang/editors_skills:SummaryforsomecommoneditorskillsIused.1842_emacs使用company-irony实现c语言的自动补全irony-mode是一个自动补全的实现方案,配合company集成之后效果非常好。简单调试完了之后,基本上能够确定这是我这么多年来使......
  • CodeForces1741G-Kirill and Company题解
    \(\large\text{CodeForces1741G-KirillandCompany题解}\)题面传送门(有翻译(由黄巨佬提供))思路预处理因为\(k\)很小,所以可以先bfs预处理出家在\(i(2\lei\len)\)的人能捎带上哪些集合的人,在表示集合时用一个\(0\)到\(2^k-1\)的整数\(j\)表示,若\(j\)在二进质下的......
  • 什么是 Spartacus Storefront B2B store 的 My Company 菜单
    Spartacus是一个基于Angular的开源JavaScriptweb应用,与SAPCommerceCloud的RESTAPI进行交互。它的目标是提供一个稳定、可靠、可扩展的前端解决方案,让开发者能够创建全功能的商店,同时避免了与后端系统的紧密耦合。其中,B2Bstore是一个专门为B2B交易设计的商店,而My......
  • 10. 销售型企业 Merchandising Company
    销售型企业的运营周期销售型记账方式1.永续盘存制PerpetualInventorySystem记录每笔交易对库存的影响。适用于单品价值高,交易频次低的企业。日期账户金额账户金额说明08-01库存1000应付账款1000向阿福赊购5元×200个08-10应付账款1000现金1000......
  • CF794C Naming Company
    题目大意奥列格和伊戈尔打算开一个公司,他们对于公司的取名有不同的意见。他们两个各有一个长度相等的字符串,公司的名字最初是全由\(\texttt{?}\)构成的一个字符串,两人轮流操作,在自己的字符串中选出一个字符取代公司名字中的某一个\(\texttt{?}\),使用后该字符就在当前操作者的......