AcWing238. 银河英雄传说

简介: 笔记

AcWing238. 银河英雄传说


有一个划分为N列的星际战场,各列依次编号为1,2,…,N。


有N艘战舰,也依次编号为1,2,…,N,其中第i号战舰处于第i列。


有T条指令,每条指令格式为以下两种之一:


1、M i j,表示让第i号战舰所在列的全部战舰保持原有顺序,接在第j号战舰所在列的尾部。


2、C i j,表示询问第i号战舰与第j号战舰当前是否处于同一列中,如果在同一列中,它们之间间隔了多少艘战舰。


现在需要你编写一个程序,处理一系列的指令。


输入格式

第一行包含整数T,表示共有T条指令。


接下来T行,每行一个指令,指令有两种形式:M i j或C i j。


其中M和C为大写字母表示指令类型,i和j为整数,表示指令涉及的战舰编号。


输出格式

你的程序应当依次对输入的每一条指令进行分析和处理:


如果是M i j形式,则表示舰队排列发生了变化,你的程序要注意到这一点,但是不要输出任何信息;


如果是C i j形式,你的程序要输出一行,仅包含一个整数,表示在同一列上,第i号战舰与第j号战舰之间布置的战舰数目,如果第i号战舰与第j号战舰当前不在同一列上,则输出-1。


数据范围

N≤30000,T≤500000


代码

#include<iostream>
#include<cstdio>
#include<queue>
#include<string>
#include<cstring>
#include<map>
#include<vector>
#include<set>
#include<stack>
#include<algorithm>
#include<vector>
#include<utility>
#include<deque>
#include<unordered_map>
#define INF 0x3f3f3f3f
#define mod 1000000007
#define endl '\n'
#define eps 1e-6
inline int gcd(int a, int b) { return b ? gcd(b, a % b) : a; }
inline int lowbit(int x) { return x & -x; }
using namespace std;
typedef long long LL;
typedef unsigned long long ULL;
typedef pair<int, int> PII;
const int N = 30030;
int n, p[N], s[N], d[N];
int Find(int x) {
  if (p[x] != x) {
    int root = Find(p[x]);
    d[x] += d[p[x]];
    p[x] = root;
  }
  return p[x];
}
int main() {
    for (int i = 1;i < N;++i) {
      p[i] = i;
      s[i] = 1;
    }
    int n;scanf("%d", &n);
    while (n--) {
      char op[2];int a, b;
      scanf("%s%d%d", op, &a, &b);
      int pa = Find(a);
      int pb = Find(b);
      if (op[0] == 'M') {
        p[pa] = pb;
        d[pa] = s[pb];
        s[pb] += s[pa];
      }
      else {
        if (pa == pb)printf("%d\n", max(0, abs(d[a] - d[b]) - 1));
        else printf("-1\n");
      }
    }
  return 0;
}


目录
相关文章
|
域名解析 网络协议 Windows
解决GitHub文件无法下载的问题
从Github下载文件的时候,发现链接挂了,下载不了,提示无法显示此网页,该如何解决呢?
|
NoSQL Redis
Mac安装Redis(图文解说详细版)
Mac安装Redis(图文解说详细版)
Mac安装Redis(图文解说详细版)
|
4月前
|
人工智能 自然语言处理 搜索推荐
从扣子空间看 AI 智能体:与豆包、Kimi 较量及未来走向
本文探讨了当前 AI 智能体的发展现状、功能特点及其与传统 AI 大模型的差异,分析了其使用门槛与未来发展趋势,展望了其在多领域应用的潜力与挑战。
1087 0
|
6月前
|
存储 人工智能 安全
赋能数字化转型的创新引擎
阿里云是全球领先的云计算与人工智能科技公司,其强大的技术实力和丰富的解决方案正深刻影响企业运营与竞争力。依托坚实的云计算基础设施,阿里云提供弹性计算、存储与网络服务,满足多样化需求。在AI与大数据领域,机器学习平台PAI及MaxCompute助力智能决策与创新应用。同时,阿里云构建全方位安全防护体系,保障数据隐私,并通过活跃的开发者社区与生态合作推动行业进步。未来,阿里云将持续加大研发投入,优化云原生技术,深化AI与大数据研究,引领数字化转型潮流,共创美好未来。
赋能数字化转型的创新引擎
|
8月前
|
弹性计算 调度 云计算
课时27:案例分享——追光动画
案例分享——追光动画 本文分享了追光动画如何计算8000万核小时的渲染时间,以及通过任务调度和云计算应对制作过程中的波峰波谷。在动画制作中,灯光、合成等部门需反复渲染,总渲染量达8000万核小时的4-5倍。为解决波峰压力,追光动画与阿里云合作,利用其弹性资源,确保高效渲染和快速迭代,满足高画质需求并降低成本。
203 1
|
11月前
|
网络协议 网络性能优化
第十二问:TCP慢起动详细解释
TCP的慢启动是其拥塞控制的一部分,旨在防止网络拥塞。在连接建立初期,TCP逐步增加发送的数据量,通过接收方的ACK确认来调整拥塞窗口(cwnd)。初始阶段cwnd较小,每收到一个ACK,cwnd增加1个MSS,发送速率大致翻倍。当cwnd达到慢启动阈值(ssthresh)时,进入拥塞避免阶段,cwnd改为线性增长。若发生数据丢失或网络拥塞,TCP会减小cwnd,重新进入慢启动。慢启动通过动态调整发送速率,确保网络不被瞬时大流量压垮。
|
前端开发 JavaScript 开发者
JavaScript 中的异步编程:深入了解 Promise 和 async/await
【10月更文挑战第8天】JavaScript 中的异步编程:深入了解 Promise 和 async/await
|
人工智能 安全 机器人
Prompt工程全攻略:15+Prompt框架一网打尽(BROKE、COAST、LangGPT)、学会提示词让大模型更高效
Prompt工程全攻略:15+Prompt框架一网打尽(BROKE、COAST、LangGPT)、学会提示词让大模型更高效
Prompt工程全攻略:15+Prompt框架一网打尽(BROKE、COAST、LangGPT)、学会提示词让大模型更高效
|
安全 编译器 C#
C#中的可空引用类型:减少空引用异常的利器
【1月更文挑战第9天】C# 8.0中引入的可空引用类型特性,它通过在编译时提供更精确的静态分析,帮助开发者减少运行时的空引用异常。文章详细阐述了可空引用类型的工作原理、如何配置项目以使用此特性,以及在实际编码中如何利用可空引用类型提升代码的健壮性和可读性。