当前位置: 首页 > news >正文

置换环模板题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;
}

http://www.mrgr.cn/news/60539.html

相关文章:

  • 【单片机】深入剖析USART与UART的区别
  • Linux scp命令
  • 【C++入门】1-(C++)计算机程序设计基础
  • c++--指针与引用
  • jupyter notebook改变默认启动路径
  • react 总结+复习+应用加深
  • 数字后端零基础入门系列 | Innovus零基础LAB学习Day7
  • 深度剖析美区代理IP的多元应用与优势
  • su user更换用户后无法打开图形屏幕Cannot open your terminal ‘/dev/pts/0‘ 解决办法
  • KVM 虚拟机Anolis OS 8.9 下利用宝塔面板中的 Docker 配置 Nextcloud + onlyoffice
  • 【vs2022】windows可用的依赖预编译库
  • 基于Multisim的串联型稳压电源设计与仿真
  • Agent实战:基于大模型的Agent技术框架开发实战
  • Python学习的自我理解和想法(22)
  • 双十一宠物空气净化器推荐,希喂、霍尼韦尔、有哈哪款性价比高?
  • llama.cpp基础知识与原理导读
  • 常用的8款文件加密软件分享|2024企业办公文件怎么加密?
  • xlive.dll错误的详细解决办法步骤教程,xlive.dll基本状况介绍
  • 适合你的GIS工具箱是哪款?五款实用工具优缺点详解
  • 文件相对路径与绝对路径
  • 深度学习训练中epoch的含义,以及每个epoch训练中acc和loss的含义
  • Android NSD局域网发现服务
  • 接口测试需要验证数据库吗?
  • 【01初识】-初识 RabbitMQ
  • 【归一化技术】层归一化和批归一化
  • matplot常备设置