置换环模板题E - Permute K times 2

在这里插入图片描述
在这里插入图片描述

输入样本 1
6 3
5 6 3 1 2 4

样本输出 1

6 1 3 2 4 5

每次操作后, P P P 都会发生如下变化:

  • 第一次操作后, P P P ( 2 , 4 , 3 , 5 , 6 , 1 ) (2,4,3,5,6,1) (2,4,3,5,6,1)
  • 第二次操作后, P P P ( 4 , 5 , 3 , 6 , 1 , 2 ) (4,5,3,6,1,2) (4,5,3,6,1,2)
  • 第三次运算后, P P P ( 6 , 1 , 3 , 2 , 4 , 5 ) (6,1,3,2,4,5) (6,1,3,2,4,5)

因此,打印 6 1 3 2 4 5

思路:本题利用了置换环的原理,通过数学归纳法可以得知,每一个环中的每一个元素在变换k次后,最终会变成2 ^ k % len 下标所对应的元素,因此我们可以对每个换进行处理即可

AC代码:

#include<bits/stdc++.h>
using namespace std;
const int N = 2e5 + 10;
const int M = 1e9 + 7;
const int MOD = 998244353;
typedef long long ll;
typedef pair<ll,ll>PII;
typedef pair<double, double>PDD;


int dx[] = {1, 1, -1, -1, 2, 2, -2, -2};
int dy[] = {2, -2, 2, -2, 1, -1, 1, -1};

ll a[N], b[N];
ll n, k;
//置换环模板题

ll qmi(ll a, ll b, ll p)
{
	ll res = 1;
	while(b){
		if(b & 1) res = res * a % p;
		a = a * a % p;
		b >>= 1;
	}
	return res % p;
}
int main()
{
	
    cin >> n >> k;//进行k次
	for(int i = 1; i <= n; i ++)
	{
		cin >> a[i];
	}
	for(int i = 1; i <= n; i ++)
	{
		if(b[i])continue;//被遍历过的环就不需要在进行置换了
		vector<int>v;//存环
		ll p = i;
		do{
			v.push_back(p);
			p = a[p];//找下一个
		}while(p != i);
		ll len = v.size();
		ll id = qmi(2, k, len);//看看最终停在哪一个位置
		for(int i = 0; i < len; i ++)
		{
			b[v[i]] = v[(id + i) % len];
		}
	}
	for(int i = 1; i <= n; i ++)
	{
		cout << b[i] << " ";
	}
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/902830.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

溪源飨提高免疫力治未病:硒+辅酶Q10强力组合

上周我和女友在亲友的见证下举行了庄重的订婚仪式。我和女友是经朋友介绍才认识的&#xff0c;认识时间并不算长。第一次见面&#xff0c;彼此就被对方深深地吸引了&#xff0c;真可谓一见钟情。我喜欢她那恬静的美&#xff0c;难以忘怀她那散发着迷人气息的双眸&#xff1b;她…

CMakeLists.txt 编写规则

目录 1. 注释 1.1 注释行 1.2 注释块 2. CMakeLists.txt的编写 2.1 同意目录下的源文件 2.2 SET指令 2.3 file和aux_source_directory 2.4 包含头文件 2.5 生成动态库和静态库 2.6 链接库文件 2.7 message指令 2.8 移除操作 2.9 find_library和find_package 3. 常…

【瑞吉外卖】-day01

目录 前言 第一天项目启动 获取资料 创建项目 ​编辑 连接本地数据库 连接数据库 修改用户名和密码 ​编辑创建表 创建启动类来进行测试 导入前端页面 创建项目所需目录 检查登录功能 登录界面 登录成功 登录失败 代码 退出功能 易错点 前言 尝试一下企业级项…

部署DNS主从服务器

一。DNS主从服务器作用&#xff1a; DNS作为重要的互联网基础设施服务&#xff0c;保证DNS域名解析服务的正常运转至关重要&#xff0c;只有这样才能提供稳定、快速日不间断的域名查询服务 DNS 域名解析服务中&#xff0c;从服务器可以从主服务器上获取指定的区域数据文件&…

基于Multisim的单双声道音频功率放大电路设计与仿真

1.额定输出功率≥5W&#xff08;fi1KHz,Ui100mV&#xff09; 2.频率响应范围150Hz&#xff5e;13KHz 3.高、低音频端提升或衰减3dB 链接&#xff1a;https://pan.baidu.com/s/1exsBJoXdkb-gPr1IkxNvDg 提取码&#xff1a;jh5j

技术分享 | 大语言模型增强灰盒模糊测试技术探索

大语言模型凭借其庞大的参数规模&#xff0c;能够通过无监督学习从海量文本中获取知识&#xff0c;从而不仅能够深刻理解文本语义&#xff0c;还能准确识别文本的格式和结构。凭借对不同数据结构的深度理解&#xff0c;大语言模型已在众多领域得到广泛应用。其中&#xff0c;尤…

【Vue3】第三篇

Vue3学习第三篇 01. 组件组成02. 组件嵌套关系03. 组件注册方式04. 组件传递数据Props05. 组件传递多种数据类型06. 组件传递Props校验07. 组件事件08. 组件事件配合v-model使用09. 组件数据传递10. 透传Attributes 01. 组件组成 在vue当中&#xff0c;组件是最重要的知识&…

移动开发(五):.NET MAUI中自定义主题设置

目录 一、.NET MAUI主题设置原理 二、.NET MAUI主题设置案例 2.1 创建主题文件 2.2 修改App.xaml 文件 2.3 设置默认主题的三种方式 2.4 通过按钮切换主题 三、.NET MAUI主题设置技巧 四、总结 今天给大家分享.NET MAUI应用中如何自定义主题&#xff0c;提升APP本身个性…

Redis 单机、主从、哨兵和集群架构详解和搭建

目录 前言 单机部署 检查安装 gcc 环境 下载安装 Redis 启动 Redis 关闭 Redis 配置Redis 主从部署 整体架构图 主从复制配置 重启 Redis 验证 主从复制的作⽤ 主从复制缺点 哨兵部署&#xff08;Sentinel&#xff09; 整体架构图 哨兵模式配置 启动哨兵 验证…

Axure简单进度条制作,原型文件可下载

1.先看效果 2.需要用到的主要元件 a动态面板遮挡进度条左侧部分 b进度条底色背景 c百分比数字 3.将进度条、背景、百分比数字设置为隐藏 4.为按钮【选择文件】添加事件&#xff0c;并显示相应的原件 显示进度条process向右侧滑动 5.设置百分比数字及显示时每25毫秒加1 如…

html----图片按钮,商品展示

源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>图标</title><style>.box{width:…

MFC的SendMessage与PostMessage的区别

一、SendMessage 同步操作&#xff1a; SendMessage 是一个同步函数&#xff0c;它会将消息发送到指定的窗口&#xff0c;并等待该窗口的消息处理过程完成&#xff0c;然后返回。这意味着它会阻塞当前线程&#xff0c;直到消息处理完成。 直接调用&#xff1a; SendMessage 会…

解决Redis缓存击穿(互斥锁、逻辑过期)

文章目录 背景代码实现前置实体类常量类工具类结果返回类控制层 互斥锁方案逻辑过期方案 背景 缓存击穿也叫热点 Key 问题&#xff0c;就是一个被高并发访问并且缓存重建业务较复杂的 key 突然失效了&#xff0c;无数的请求访问会在瞬间给数据库带来巨大的冲击 常见的解决方案…

详细解读 CVPR2024:VideoBooth: Diffusion-based Video Generation with Image Prompts

Diffusion Models专栏文章汇总:入门与实战 前言:今天是程序员节,先祝大家节日快乐!文本驱动的视频生成正在迅速取得进展。然而,仅仅使用文本提示并不足以准确反映用户意图,特别是对于定制内容的创建。个性化图片领域已经非常成功了,但是在视频个性化领域才刚刚起步,这篇…

10.28.2024刷华为OD C题型

文章目录 HJ9HJ10HJ11HJ13HJ17 HJ9 HJ10 HJ11 HJ13 HJ17

2024年【浙江省安全员-C证】新版试题及浙江省安全员-C证模拟考试

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 浙江省安全员-C证新版试题考前必练&#xff01;安全生产模拟考试一点通每个月更新浙江省安全员-C证模拟考试题目及答案&#xff01;多做几遍&#xff0c;其实通过浙江省安全员-C证模拟考试很简单。 1、【多选题】5kW以…

《计算机网络网络层:连接虚拟世界的关键桥梁》

一、网络层概述 网络层在计算机网络中占据着至关重要的地位&#xff0c;它作为连接不同网络的关键层次&#xff0c;起着承上启下的作用。网络层的主要任务是实现网络互连&#xff0c;将数据设法从源端经过若干个中间节点传送到目的端&#xff0c;为分组交换网上的不同主机提供通…

【LeetCode每日一题】——862.和至少为 K 的最短子数组

文章目录 一【题目类别】二【题目难度】三【题目编号】四【题目描述】五【题目示例】六【题目提示】七【解题思路】八【时空频度】九【代码实现】十【提交结果】 一【题目类别】 前缀和 二【题目难度】 困难 三【题目编号】 862.和至少为 K 的最短子数组 四【题目描述】 …

【Vue】word / excel / ppt / pdf / 视频(mp4,mov) 预览

文件预览 Vue3一. word二. excel三. ppt四. pdf4.1 vue-pdf-embed4.2 iframe 五. 视频六&#xff1a;扩展——kkFileView Vue3 一. word 安装&#xff1a;npm install docx-preview父页面 <template><div><DocPreviewv-if"filePath.includes(docx)"…

【Go-Taskflow:一个类似任务流的有向无环图(DAG)任务执行框架,集成了可视化和性能分析工具,旨在简化并行任务的复杂依赖管理】

Go-Taskflow是一个静态有向无环图&#xff08;DAG&#xff09;任务计算框架&#xff0c;它受到taskflow-cpp的启发&#xff0c;结合了Go语言的原生能力和简洁性&#xff0c;特别适合于并发任务中复杂的依赖管理。 Go-Taskflow的主要特点包括&#xff1a; 高可扩展性&#xff1…