幼儿园战争

题面传送门

灵魂出窍并查集,修改后留一个空壳以确保家人们的团结

#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;

inline void input(int &x){
    int ans=0,f=1;
    char c=getchar();
    while(c>'9'||c<'0'){
        if(c=='-')f=-1;
        c=getchar();
    }
    while(c>='0'&&c<='9'){
        ans=(ans<<1)+(ans<<3)+(c-48);
        c=getchar();
    }
    x=ans*f;
}

inline void output(int x){
    if(x<0)x=-x,putchar('-');
    if(x>9)output(x/10);
    putchar(x%10+48);
}

inline void writeln(int x){
    output(x);
    putchar('\n');
}

int n,m,fa[1000005],size[1000005],now[1000005],tot,cnt;

inline int getfa(int v){return fa[v]==v?v:fa[v]=getfa(fa[v]);}

int main(){
    int T;
    input(T);
    for(int emm=1;emm<=T;emm++){
        printf("Case #%d:\n",emm);
        input(n);input(m);
        for(int i=1;i<=n;i++){
            fa[i]=i;
            size[i]=1;
            now[i]=i;
        }
        tot=n;cnt=n;
        for(int i=1;i<=m;i++){
            char s[10];
            scanf("%s",s);
            if(s[0]=='q'){
                writeln(tot);
            }
            else if(s[0]=='f'){
                int x,y,yuanx,yuany,fax,fay;
                input(yuanx);input(yuany);x=now[yuanx];y=now[yuany];
                fax=getfa(x);fay=getfa(y);
                if(fax==fay)continue;
                if(size[fax]==size[fay]){
                    printf("Either is winner!\n");
                }
                else if(size[fax]>size[fay]){
                    printf("%d is winner!\n",yuanx);
                    fa[fay]=fax;
                    size[fax]+=size[fay];
                    tot--;
                }
                else if(size[fay]>size[fax]){
                    printf("%d is winner!\n",yuany);
                    fa[fax]=fay;
                    size[fay]+=size[fax];
                    tot--;
                }
            }
            else if(s[0]=='t'){
                int x,y,yuanx,yuany,fax,fay;
                input(yuanx);input(yuany);x=now[yuanx];y=now[yuany];
                fax=getfa(x);fay=getfa(y);
                int next=++cnt;
                fa[next]=fax;
                size[fax]++;
                size[fay]--;
                if(size[fay]==0)tot--;
                now[yuany]=next;
            }
            else if(s[0]=='r'){
                int x,yuanx,fax;
                input(yuanx);x=now[yuanx];
                fax=getfa(x);
                if(size[fax]==1)continue;
                int next=++cnt;
                fa[next]=next;
                size[next]=1;
                size[fax]--;
                tot++;
                now[yuanx]=next;
            }
            /*
            putchar('a');
            for(int i=1;i<=n;i++){
                printf("%d,%d ",size[getfa(now[i])],getfa(now[i]));
            }
            putchar('\n');
            */
        }
    }
}

转载于:https://www.cnblogs.com/Y15BeTa/p/11617704.html

内容概要:本文档主要介绍了Intel Edge Peak (EP) 解决方案,涵盖从零到边缘高峰的软件配置和服务管理。EP解决方案旨在简化客户的入门门槛,提供一系列工具和服务,包括Edge Software Provisioner (ESP),用于构建和缓存操作系统镜像和软件栈;Device Management System (DMS),用于远程集群或本地集群管理;以及Autonomous Clustering for the Edge (ACE),用于自动化边缘集群的创建和管理。文档详细描述了从软件发布、设备制造、运输、安装到最终设备激活的全过程,并强调了在不同应用场景(如公共设施、工业厂房、海上油井和移动医院)下的具体部署步骤和技术细节。此外,文档还探讨了安全设备注册(FDO)、集群管理、密钥轮换和备份等关键操作。 适合人群:具备一定IT基础设施和边缘计算基础知识的技术人员,特别是负责边缘设备部署和管理的系统集成商和运维人员。 使用场景及目标:①帮助系统集成商和客户简化边缘设备的初始配置和后续管理;②确保设备在不同网络环境下的安全启动和注册;③支持大规模边缘设备的自动化集群管理和应用程序编排;④提供详细的密钥管理和集群维护指南,确保系统的长期稳定运行。 其他说明:本文档是详细描述了Edge Peak技术及其应用案例。文档不仅提供了技术实现的指导,还涵盖了策略配置、安全性和扩展性的考虑,帮助用户全面理解和实施Intel的边缘计算解决方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值