F - Shifting String(置换的阶+思维)

2023-10-30

前置知识

轮换求置换的阶

例如 由1 2 3 4 5 变为 1 3 2 5 4可以写出其两个转换 (1 3 2)(4 5 ),在同一个转换中的数字经过循环可以回到他们对应的原位置。置换的阶即为所有轮换阶数的最小公倍数(lcm)。

一组数据的最小公倍数,可以依次求元素和当前最小公倍数的最小公倍数,最后的最小公倍数即为整组数据的最小公倍数。

// #pragma GCC optimize (2)
// #pragma G++ optimize (2)
#include <iostream>
#include <cstring>
#include <algorithm>
#include <queue>
#include <vector>
#define endl '\n'
#define int long long
#define lowbit(x) x &(-x)
#define rep(i, a, n) for (int i = a; i <= n; i++)
#define TLE(){ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);}
using namespace std;
typedef long long ll;
const int N = 2e5 + 10;
int gcd(int a,int b)
{
	return b ? gcd (b, a % b) : a;
}
int lcm(int a,int b)
{
	return a / gcd(a,b) * b;
}
char s[2000];int p[N];
bool vis[N];
void solve()
{
    int n;
    cin>>n;
    cin>>s;
    for(int i=1;i<=n;i++)vis[i]=false;
    rep(i,0,n-1)
    {
    	cin>>p[i];
    	p[i]--;
    }
    int ans=1;
    rep(i,0,n-1)
    {
    	if (vis[i]) continue;
            vis[i] = true;
            int u = p[i];
            string t = string (1, s[i]);
            while (u != i) //获取一个轮换子序列
            {
                vis[u] = true;
                t += s[u];
                u = p[u];
            }
        int cnt=(t+t).find(t,1);//求得当前轮换的阶数
        ans=lcm(ans,cnt);
    }
    cout<<ans<<endl;
    return;
}
signed main()
{
    TLE();
    int T;
    //T = 1;
    cin>>T;
    while (T--)
        solve();
    return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

F - Shifting String(置换的阶+思维) 的相关文章

  • 尝试了解使用服务打开对话框

    我已经阅读了有关使用 mvvm 模式打开对话框的讨论 我看过几个使用服务的示例 但我不明白所有部分如何组合在一起 我发布这个问题寻求指导 以了解我应该阅读哪些内容 以更好地理解我所缺少的内容 我将在下面发布我所拥有的内容 它确实有效 但从我
  • 前向声明类型和“已声明为类类型的非类类型”

    我对以下代码有问题 template
  • 有些有助于理解“产量”

    在我不断追求少吸的过程中 我试图理解 产量 的说法 但我不断遇到同样的错误 someMethod 的主体不能是迭代器块 因为 System Collections Generic List 不是迭代器接口类型 这是我被卡住的代码 forea
  • 无法注册时间触发的后台任务

    对于 Windows 8 应用程序 在 C Xaml 中 我尝试注册后台任务 很难说 但我想我的后台任务已正确注册 但是当我单击调试位置工具栏上的后台任务名称时 我的应用程序停止工作 没有任何消息 我查看了事件查看器上的日志 得到 具有入口
  • 强制初始化模板类的静态数据成员

    关于模板类的静态数据成员未初始化存在一些问题 不幸的是 这些都没有能够帮助我解决我的具体问题的答案 我有一个模板类 它有一个静态数据成员 必须为特定类型显式实例化 即必须专门化 如果不是这种情况 使用不同的模板函数应该会导致链接器错误 这是
  • cpp.react库的C++源代码中奇怪的“->* []”表达式

    这是我在文档中找到的 C 片段cpp react 库 https github com schlangster cpp react implicit parallelism auto in D MakeVar 0 auto op1 in g
  • RestSharp获取序列化输出

    我正在寻找一种方法来访问 AddBody 调用的序列化结果 我正在使用内置的 RestSharp 序列化器 例子 class Foo public string FooField void SendRecord var f new Foo
  • 即使没有异步,CallContext.LogicalGetData 也会恢复。为什么?

    我注意到CallContext LogicalSetData LogicalGetData不按照我期望的方式工作 内部设置的值async方法得到恢复即使没有异步或任何类型的线程切换 无论如何 这是一个简单的例子 using System u
  • 不同 C++ 文件中的相同类名

    如果两个 C 文件具有相同名称的类的不同定义 那么当它们被编译和链接时 即使没有警告也会抛出一些东西 例如 a cc class Student public std string foo return A void foo a Stude
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • 获取没有显式特征的整数模板参数的有符号/无符号变体

    我希望定义一个模板类 其模板参数始终是整数类型 该类将包含两个成员 其中之一是类型T 另一个作为类型的无符号变体T 即如果T int then T Unsigned unsigned int 我的第一直觉是这样做 template
  • 如何将AVFrame转换为glTexImage2D使用的纹理?

    如您所知 AVFrame 有 2 个属性 pFrame gt data pFrame gt linesize 当我从视频 sdcard test mp4 android平台 读取帧后 并将其转换为RGB AVFrame副 img conve
  • 在 .NET MAUI 中实现 TouchTracking

    我一直致力于将我们的应用程序从 Xamarin Forms 迁移到 NET MAUI 我们的应用程序几乎没有绘图功能 用户可以用手指进行绘图 我们用了TouchTrackingXamarin Forms 中的 nuget 包 但与 NET
  • 模板外部链接?谁能解释一下吗?

    模板名称具有链接 3 5 非成员函数模板可以有内部链接 任何其他模板名称应具有外部链接 从具有内部链接的模板生成的实体与在其他翻译单元中生成的所有实体不同 我知道使用关键字的外部链接 extern C EX extern C templat
  • 将函数参数类型提取为参数包

    这是一个后续问题 解包 元组以调用匹配的函数指针 https stackoverflow com questions 7858817 unpacking a tuple to call a matching function pointer
  • 如何解压 msgpack 文件?

    我正在将 msgpack 编码的数据写入文件 在编写时 我只是使用 C API 的 fbuffer 如 我为示例删除了所有错误处理 FILE fp fopen filename ab msgpack packer pk msgpack pa
  • WPF DataGrid / ListView 绑定到数组 mvvm

    我们假设你有 N 个整数的数组 表示行数的整数值 在模型中 该整数绑定到视图中的 ComboBox Q1 如何将数组 或数组的各个项目 绑定到 DataGrid 或 ListView 控件 以便 当您更改 ComboBox 值时 只有那么多
  • 无法将字符串文字分配给装箱的 std::string 向量

    这是我的类型系统的简化版本 include
  • 是否允许全局静态标识符以单个 _ 开头?

    换句话说 可能static 文件范围 全局变量恰好以一个下划线开头 而不会产生与 C 实现发生名称冲突的可能性 https www gnu org software libc manual html node Reserved Names
  • 我可以使用 lambda 函数或 std::function 对象来代替函数指针吗?

    我有一个需要使用的库 它定义了以下内容 typedef void CallbackFunction const int i 并且有一个注册回调的函数 如下所示 void registerCallback CallbackFunction p

随机推荐

  • Spring Boot Maven项目使用SystemPath引用第三方平台遇到的大坑

    本次与算法厂家对接 使用了他们的Jar包 最先考虑的是不使用Maven仓库 便于离线开发 首先采用了方案
  • 推荐系统介绍

    课程内容 推荐系统在电子商务领域得到普遍的运用 推荐系统本质上是销售系统的一部分 在便利店 推荐系统是导购牌 类目货架 是老板娘 在超市 推荐系统是导购牌 类目货架 是销售员 在电商 推荐系统是什么 不管是在便利店 还是超市 或者电商网站
  • 【数学建模美赛】2023数模美赛备赛指南

    二月中旬要开始美赛了 应该是准备考研这一年的唯一一次正规比赛了 希望能好好完成 在博客边分享边准备 打算开一个新坑 好好准备一下 文章目录 报名事项 赛题特点 六道赛题特点 A B C D E F 竞赛攻略 报名事项 官方网站 美赛官网 h
  • 群晖docker安装chrome

    在docker中下载oldiy chrome novnc 启动这个映像 安装完成后 启动容器 如果路由器wan口是公网ip 可以在路由器上添加5900和8083的端口映射 会更方便访问 如果没有那就可以用群晖的quickconnect 假如
  • 利用Docker 搭建 upload-labs 靶场

    Docker 搭建 upload labs 靶场 靶场搭建 获取upload labs镜像 docker search upload labs 然后下载镜像 命令 docker pull c0ny1 upload labs 如下图即为下载成
  • 样式设置 /deep/

    样式设置scoped属性带来的问题 通常我们在写样式的时候会在style标签中加上scoped属性 相信这个属性的作用大家都很清楚 Scoped CSS规范是Web组件产生不污染其他组件 也不被其他组件污染的CSS规范 但是这样有时候也会遇
  • Python爬虫从入门到精通:(34)大文件下载_Python涛哥

    还记得我们之前爬取的校花网图片吗 课程地址 爬取校花网中的图片数据 这节课我们利用scrapy的大文件下载 来下载校花网图片 http www 521609 com daxuexiaohua 创建工程 我们先来创建一个工程imgPro 创建
  • 机器学习笔记十二:分类与回归树CART

    更新时间 2017 11 18 简化语言 更加通俗 实现 实现部分采用的数据集是机器学习实战中的数据集 代码则是按照自己的理解重新改写了一遍 读取数据模块 data py import numpy as np def loadData fi
  • JAVA中如何写注释

    文章目录 0 写在前面 1 格式 2 演示 2 1 单行注释 2 2 多行注释 2 3 生成文档注释 3 写在最后 0 写在前面 一段良好的代码应该有注释 这样可以使不同的创作者或者阅读者进行良好的阅读 与大多数程序设计语言一样 Java
  • 统信桌面操作系统产线总经理王耀华:深度开源社区的十五年运营路

    深度 deepin 社区是以桌面操作系统为主的开源社区 已经持续运营15年 有接近13万的注册用户 全球下载超过8000万 海外超过300万 并基于deepin衍生出ubuntuDDE manjaro deepin等多个发行版本 2022
  • 错题本 - 机器学习

    下面关于支持向量机 SVM 的描述错误的是 A 是一种监督式学习的方法 B 可用于多分类的问题 C 是一种生成式模型 D 支持非线性的核函数 答案 C 解析 SVM是判别式模型 SVM 支持向量机 SVM 是一类按监督学习方式对数据进行二元
  • File,FileInputStream,FileReader,InputStreamReader,BufferReader 的区别使用

    File 类介绍 File 类封装了对用户机器的文件系统进行操作的功能 例如 可以用 File 类获得文件上次修改的时间 移动 或者对文件进行删除 重命名 换句话说 流类关注的是文件内容 而 File 类关注的是文件在磁盘上的存储 主要方法
  • 使用jsp获取页面的访问ip地址并统计访问量

    jsp获取页面的访问ip地址并统计访问量 考虑到ip地址是唯一不重复的 可以使用set集合来放置ip 然后用set size 得到ip的数量 话不多说 代码在下面
  • 毕业项目SSM框架配置文件之web.xml

  • 【AIGC】AI-Agents最新成果-斯坦福AI小镇源码解读

    写在前面的话 今年年初斯坦福和谷歌的研究人员创建了一个类似于 模拟人生 的微型 RPG 虚拟世界 其中 25 个角色由 GPT 和自定义代码控制 并在arxiv上提交了论文版本 引起了对AIGC 游戏的广泛讨论 8月 该项目在GitHub上
  • TensorFlow2 Fashion-MNIST图像分类(一)

    1 数据集介绍 FashionMNIST 是一个替代 MNIST 手写数字集的图像数据集 它是由 Zalando 一家德国的时尚科技公司 旗下的研究部门提供 其涵盖了来自 10 种类别的共 7 万个不同商品的正面图片 FashionMNIS
  • linux网卡驱动更换,Ubuntu更换网卡驱动

    由于Ubuntu自带的网卡驱动并不一定十分适合自己电脑的网卡 可能会出现插入网线后响应慢的情况 所以可以手动更换Ubuntu的网卡驱动 此处更换以我自己电脑上网卡为例 我的网卡是Realtek生产的 以下是具体过程 1 ifconfig a
  • 一条十几秒的Tik Tok视频月变现9w,2022年还得是短视频来钱快

    大家好 我是项柚 95后社畜一枚 之前辛辛苦苦给老板打一个月苦工 还没我现在做短视频带来的收益高 仅代表个人收益 从一个不怎么冲浪连抖音都懒得刷的门外汉 短短一个多月 一次性还清了自己的银行卡贷款 4个月攒出来某市中心30w房子的首付 原来
  • python中chr函数是什么意思_ord函数和chr函数

    ord函数 order 返回一个字符对应的unicode编码 而chr函数 char 正好反过来 它返回一个unicode编码对应的字符 他们都是python内置函数 为什么是unicode 因为unicode长度统一 都是2个byte 非
  • F - Shifting String(置换的阶+思维)

    前置知识 轮换求置换的阶 例如 由1 2 3 4 5 变为 1 3 2 5 4可以写出其两个转换 1 3 2 4 5 在同一个转换中的数字经过循环可以回到他们对应的原位置 置换的阶即为所有轮换阶数的最小公倍数 lcm 一组数据的最小公倍数