zoukankan      html  css  js  c++  java
  • 堆与并查集。洛谷P3378&P3367

    晚上A了一堆板子题
    我太弱了!
    堆:洛谷P3378
    AC代码:(STL

    // luogu-judger-enable-o2
    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<string>
    #include<map>
    #include<set>
    #include<queue>
    #define INF 0x3f3f3f3f
    #define inf 0x3f
    #define ll long long
    using namespace std;
    priority_queue<int,vector<int>,greater<int> > q;
    int a,n,sum,qwq;
    int main(){
        cin>>n;
        for(int i=1;i<=n;i++){
            cin>>a;
            if(a==1){
                cin>>sum;
                q.push(sum);
            }
            if(a==2){
                qwq=q.top();
                cout<<qwq<<endl; 
            }
            if(a==3) q.pop(); 
        }
        return 0;

    开氧气跑得很快。
    并查集:P3367
    使用路径压缩。

    #include<iostream>
    #include<cstdio>
    #include<cmath>
    #include<cstring>
    #include<string>
    #include<map>
    #include<set>
    #include<queue>
    #define INF 0x3f3f3f3f
    #define inf 0x3f
    #define ll long long
    using namespace std;
    int fa[10001],n,m,z,x,y;
    inline void clear(){
        for(int i=1;i<=n;i++) fa[i]=i; 
    }
    int find(int x){
        if(fa[x]==x) return x;
        return fa[x]=find(fa[x]);
    }
    int merge(int x,int y){
        int xx=find(x);
        int yy=find(y);
        if(xx==yy) return 0;
        fa[xx]=yy;
        return 1;
    }
    int main(){
        cin>>n>>m;
        clear();
    
        for(int i=1;i<=m;i++){
            cin>>z>>x>>y;
            if(z==1) merge(x,y);
            if(z==2) {
                if(find(x)==find(y)) cout<<"Y"<<endl;
                else cout<<"N"<<endl;
            }
        }
        return 0;
    }
  • 相关阅读:
    使用element-ui是下拉筛选选择
    vue 组件传值
    vue element 地址联动的使用
    vux scroller
    实时监听组件中路由的变化
    vuex的使用
    对移动端滚动高度的获取
    【转】ACM 取石子问题
    【转】ACM博弈知识汇总
    EOJ 2857 编辑距离
  • 原文地址:https://www.cnblogs.com/kenlig/p/9445831.html
Copyright © 2011-2022 走看看