博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【数轴染色+并查集路径压缩+加速】数轴染色
阅读量:4552 次
发布时间:2019-06-08

本文共 881 字,大约阅读时间需要 2 分钟。

【思路】

每次我们染了一个区间,下一次如果还要染这个区间或者它的子区间的话,我们就不用处理了。这样我们可以把每一个区间抽象成一个点,用并查集来维护。合并时将[L,R]区间全部合并,[L,R]区间的每个点的父节点都通过路径合并变成L-1,然后n–。这样每个点只会被合并一次,复杂度O(nα(n)) ,跑得很快。

如 3 3

  • fa[3]=2,操作一次

    5 7,

  • fa[7]=fa[6]=fa[5]=4,操作三次

    2 8:

  • fa[8]=fa[7],操作一次;
  • 由于5,6,7已经被合并到了4这个点,所以下一次直接跳到4;
  • fa[4]=3,操作一次;
  • fa[3]=2,直接调到2;
  • fa[2]=1,操作一次。

【Accepted】

1 #include
2 #include
3 #include
4 #include
5 #include
6 #include
7 #include
8 #include
9 using namespace std;10 const int maxn=2e5+3;11 int fa[maxn];12 int n,m;13 int find(int x)14 {15 return fa[x]==x?x:fa[x]=find(fa[x]); 16 }17 void init()18 {19 for(int i=0;i<=n;i++)20 {21 fa[i]=i;22 }23 }24 int main()25 {26 while(~scanf("%d%d",&n,&m))27 {28 init();29 for(int i=0;i
View Code

 

转载于:https://www.cnblogs.com/itcsl/p/7184697.html

你可能感兴趣的文章
urllib 中的异常处理
查看>>
【SQL Server高可用性】高可用性概述
查看>>
通过SQL Server的扩展事件来跟踪SQL语句在运行时,时间都消耗到哪儿了?
查看>>
SQL优化:重新编译存储过程和表
查看>>
PCB“有铅”工艺将何去何从?
查看>>
Solr环境搭建
查看>>
垂直居中的几种实现方法
查看>>
UILabel标签文字过长时的显示方式
查看>>
H5离线缓存机制-manifest
查看>>
比较:I/O成员函数getline() 与 get()(第二种用法)的用法异同
查看>>
201671010118 2016-2017-2《Java程序设计》 第十一周学习心得
查看>>
Get Sauce(状压DP)
查看>>
Office2007 升级到 office2010
查看>>
SpringBoot整合Hibernate
查看>>
PPT1 例2
查看>>
extern外部方法使用C#简单例子
查看>>
血液循环结构
查看>>
SQL Server统计数据库中表个数、视图个数、存储过程个数
查看>>
设计模式:观察者模式
查看>>
JVM体系结构之六:堆Heap之1
查看>>