[ABC238E] Range Sums

纯粹的發表於2024-06-03

原題連結

題解

把這裡的數字看成間隔,不要看成點

假設已知能和 \(l\) 組成區間的端點集合 \(A\) 和以 \(r\) 組成區間的端點集合 \(B\),這時候加入一個以 \(l,r\) 為左右端點的區間,那麼在加入區間 \(l,r\) 之後,這兩個集合可以合併

code

#include<bits/stdc++.h>
using namespace std;
int fa[200005];
int finds(int now){return fa[now]==now?now:fa[now]=finds(fa[now]);}
int main()
{
    int n,q;
    cin>>n>>q;
    for(int i=1;i<=n;i++) fa[i]=i;
    while(q--)
    {
        int x,y;
        cin>>x>>y;
        fa[finds(x-1)]=finds(y);
    }
    if(finds(0)==finds(n)) puts("Yes");
    else puts("No");
    return 0;
}

相關文章