首页 > 其他分享 >2024SMUSpring天梯2补题

2024SMUSpring天梯2补题

时间:2024-03-27 10:26:46浏览次数:27  
标签:vis int fa vct 补题 天梯 hate find 2024SMUSpring

L2-2:红色警报

题意:

只要连通块数目减少就输出RedAlert,主要是连通块数目..

int n,m,k;
unordered_map<int,int> mark;
vector<int> vct[505];
bool vis[505];
void dfs(int x){
    for(auto v:vct[x]){
        if(!vis[v]&&!mark[v]){
            vis[v]=1;
            dfs(v);
        }
    }
}
void solve(){                   //L2-2      ??---
    // 题意理解错了,不是现有国家整体从连通到不连通才输出RedAlert。而是只要国家连通块增加了,就输出RedAlert..
    cin>>n>>m;
    for(int i=1;i<=m;i++){
        int u,v;
        cin>>u>>v;
        vct[u].emplace_back(v);
        vct[v].emplace_back(u);
    }
    cin>>k;
    int cntBlock=0;
    for(int i=0;i<n;i++) {
        if(!vis[i]){
            vis[i]=1;
            dfs(i);
            cntBlock++;
        }
    }
    for(int i=1;i<=k;i++){
        int bd; cin>>bd;
        mark[bd]=1;
        memset(vis,0,sizeof(vis));
        int curcnt=0;
        for(int j=0;j<n;j++){
            if(!vis[j]&&!mark[j]){
                dfs(j);
                vis[j]=1;
                curcnt++;
            }
        }
        if(curcnt<=cntBlock) cout<<"City "<<bd<<" is lost."<<endl;
        else cout<<"Red Alert: City "<<bd<<" is lost!"<<endl;
        cntBlock=curcnt;
    }
    if(k==n) cout<<"Game Over.";
}

L2-3:排座位

题意:

朋友关系可以传递,敌对关系不可以传递。

int fa[300];//1-100存朋友关系.101-200存敌对关系.---no!!敌对关系不会传递!!
int find(int x){
    if(x!=fa[x]) fa[x]=find(fa[x]);
    return fa[x];
}
void Union(int x,int y){
    int fa1=find(x),fa2=find(y);
    fa[fa1]=fa2;
}
void solve(){                       //L2-3
    //要用并查集,用map写的话只有22分,扣3分。。因为长的传递关系map识别不出来..
    int n,m,k;
    cin>>n>>m>>k;
    for(int i=1;i<=100;i++) fa[i]=i;
    unordered_set<int> hate[105];
    for(int i=1;i<=m;i++){
        int u,v,rela;
        cin>>u>>v>>rela;
        if(rela==-1){
            hate[u].insert(v);   //一个人敌对的人可能有多个
            hate[v].insert(u);
        }
        else if(find(u)!=find(v)) Union(u,v);
    }
    while(k--){
        int u,v; cin>>u>>v;
        int frdu=find(u),frdv=find(v);
        if((hate[u].find(v)!=hate[u].end())&&frdu==frdv) cout<<"OK but..."<<endl;
        else if(hate[u].find(v)!=hate[u].end()) cout<<"No way"<<endl;
        else if(frdu==frdv) cout<<"No problem"<<endl;
        else cout<<"OK"<<endl;
    }
}

 

标签:vis,int,fa,vct,补题,天梯,hate,find,2024SMUSpring
From: https://www.cnblogs.com/ouhq/p/18098310

相关文章

  • 2023ICPC沈阳区域赛I题Three Rectangles补题
    题意有一个(0,0)(左下角)到(H,W)(右上角)的矩形区域,给出3个小矩形的h和w,要求3个矩形盖住矩形区域的放置方案:要求3个矩形不能旋转,只能放到整点上,不能超出矩形区域,可以重叠。mod1e9+7。H,W范围1e9,\(1\leqh_i\leqH,1\leqw_i\leqW\)分析及实现由3个小矩形盖住大矩形,通过思考......
  • 2024年天梯成信小赛--L2-3,L2-4补题
    L2-3:Gwen的小剪刀题意:思路:二分美感度+克鲁斯卡尔intn,m,sum0;typedefstructmyp{intu,v;intb,h;};boolcmp(mypa,mypb){returna.h<b.h;}myparr[200005];intfa[100005];intfind(intx){// if(x==fa[x])returnx;// returnfa[x]=find(fa[x......
  • SUM-ACM——VJ天梯训练赛
    这次比赛我暴露了很多问题,一些模拟还有贪心思路错误。补题如下:E-E题解:一道模拟题,我的问题在于不知道怎么替换下一个,就从0开始遍历数组然后数组的值--,如果为零就continue下一个,这个问题在于无法遍历完所有的数,会少算。其实只需要把接完水的按顺序到下一个就可以了,这样还有一个......
  • 天梯赛训练
    天梯赛训练A-A洛谷-P2669#include<bits/stdc++.h>#definedebug(a)cout<<#a<<"="<<a<<'\n';usingnamespacestd;usingi64=longlong;typedefpair<i64,i64>PII;intmain(){ ios::sync_with_stdi......
  • 2024年天梯成信校赛补题
    1-1代码胜于雄辩嘿嘿 L1-2收水费思路:分类讨论 L1-3日期思路:模拟 L1-4回文数思路:翻转后判断是否相等 L1-5yihan的新函数思路:模拟 L1-6二进制思路:二进制每位最多进位1,模拟下二进制加法即可 L1-7大山中的学院思路:统计每个山脉对空地的贡献 L1-8堆积木思......
  • 2024年天梯成信校赛
    2024年天梯成信校赛L1-1代码胜于雄辩-2024年天梯成信校赛补题(pintia.cn)就用PHPNoPHPcanbeusedinthiscontestsL1-2收水费-2024年天梯成信校赛补题(pintia.cn)#include<bits/stdc++.h>#definedebug(a)cout<<#a<<"="<<a<<'\n';using......
  • 20240319天梯赛训练
    P2669[NOIP2015普及组]金币#include<bits/stdc++.h>usingnamespacestd;usingi32=int32_t;usingi64=longlong;usingldb=longdouble;#defineintlonglongusingvi=vector<int>;usingpii=pair<int,int>;constintmod=998......
  • 2024年3月18日 快速幂+补题
    快速幂longlongqpow(longlonga,longlongb){longlongres=1;while(b){if(b&1)res=res*a;a=a*a;b>>=1;}returnres;}快速幂加速矩阵计算应用于计算定长k路、斐波那契数列、求解递推式子题目:https://www.luogu.com.cn/problem/P1962htt......
  • SMU 2024 spring 天梯赛1
    7-3强迫症简单的模拟但是注意这句话:对于那些只写了年份后两位的信息,我们默认小于22都是20开头的,其他都是19开头的。点击查看代码#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongvoidsolve(){strings;cin>>s;intn=s.size();......
  • SMU 2024 spring 天梯赛1
    SMU2024spring天梯赛17-1种钻石-SMU2024spring天梯赛1(pintia.cn)#include<bits/stdc++.h>#definedebug(a)cout<<#a<<"="<<a<<'\n';usingnamespacestd;usingi64=longlong;typedefpair<i64,i64>......