牛客多校2 - Just Shuffle(置换群的幂)
题目链接:点击查看
题目大意:给出一个置换 B,求出一个置换 A ,使得 ,k 是一个大质数
题目分析:等式两边同时乘以 t 次幂,变为 ,显然当 t 为 k 的逆元时,有式子 ,所以求一下 B 的 t 次幂就好了
代码:
#include<iostream>
#include<cstdio>
#include<string>
#include<ctime>
#include<cmath>
#include<cstring>
#include<algorithm>
#include<stack>
#include<climits>
#include<queue>
#include<map>
#include<set>
#include<sstream>
#include<cassert>
using namespace std;typedef long long LL;typedef unsigned long long ull;const int inf=0x3f3f3f3f;const int N=1e5+100;int a[N],ans[N];bool vis[N];int main()
{
#ifndef ONLINE_JUDGE
// freopen("input.txt","r",stdin);
// freopen("output.txt","w",stdout);
#endif
// ios::sync_with_stdio(false);int n,k;scanf("%d%d",&n,&k);for(int i=1;i<=n;i++)scanf("%d",a+i);for(int i=1;i<=n;i++){if(vis[i])continue;vector<int>circle;int pos=i;while(!vis[pos]){circle.push_back(pos);vis[pos]=true;pos=a[pos];}int sz=circle.size();int t=0;while(t<sz){if(1LL*t*k%sz==1)break;t++;}for(int i=0;i<sz;i++)ans[circle[i]]=circle[(i+t)%sz];}for(int i=1;i<=n;i++)printf("%d ",ans[i]);return 0;
}
牛客多校2 - Just Shuffle(置换群的幂)相关推荐
- 牛客多校三 B Black and white
牛客多校三 B Black and white 在n*m的棋盘上,每个格子有一个数,初始可以选一定的格子标记为黑色,在任意四个形如(i1, j1)(i1, j2)(i2, j1)(i2, j2)的格子 ...
- 2019牛客多校第一场
2019牛客多校第一场 题号 题目 知识点 A Monotonic Matrix B Symmetric Matrix C Fluorescent 2 D Two Graphs E Removal F ...
- LCS(2021牛客多校4)
LCS(2021牛客多校4) 题意: 让你构造三个字符串s1,s2,s3,长度均为n,要求LCS(s1,s2)=a,LCS(s2,s3)=b,LCS(s1,s3)=c 题解: 先考虑三个串互相LCS为 ...
- 24dian(牛客多校第三场)
24dian(牛客多校第三场) 题意: 给你n张牌,每张牌的大小为1 ~ 13,问这些牌与加减乘除任意组合(可以使用括号),且但所有的有效解在计算过程中都涉及到分数,即非整数,能否组成答案m,如果可以 ...
- 2018年牛客多校算法寒假训练营练习比赛(第一场)C. 六子冲
2018年牛客多校算法寒假训练营练习比赛(第一场)C. 六子冲 题目链接 做法:模拟即可 #include <bits/stdc++.h> #define P pair<int,in ...
- 2019牛客多校第四场 I题 后缀自动机_后缀数组_求两个串de公共子串的种类数
目录 求若干个串的公共子串个数相关变形题 对一个串建后缀自动机,另一个串在上面跑同时计数 广义后缀自动机 后缀数组 其他:POJ 3415 求两个串长度至少为k的公共子串数量 @(牛客多校第四场 I题 ...
- 2022牛客多校(十)
2022牛客多校(十) 一.比赛小结 比赛链接:"蔚来杯"2022牛客暑期多校训练营10 二.题目分析及解法(基础题) F.Shannon Switching Game? 题目链接 ...
- 2019牛客多校训练第十场F Popping Balloons
2019牛客多校训练第十场F Popping Balloons 题意:二维平面内给你若干个点,然后你可以在x轴和y轴分别射三枪(每一枪的间隔是R),问最多能射掉多少气球. 题解:贪心.这个应该只能算作 ...
- 牛客多校第十场F-Popping Balloons
题目连接 牛客多校F-PoppingBalloons 题意: 用枪打气球,可以横着打三次,竖着打三次,横着打可以把那一行的气球全打下来,竖着打可以把那一列的气球全打下来,但是,每两次相邻的横着打或者竖 ...
最新文章
- 使用gradle构建android项目,Android中使用Gradle来构建App项目的入门指南
- onbeforeedit和onbeginedit数据不一致_Rrbind.fill|列数不一致的多个数据集“智能”合并,Get!...
- C++ Primer 5th笔记(chap 15 OOP)继承之类型转换
- python dataframe删除指定行_pandas.DataFrame删除/选取含有特定数值的行或列
- 离线语音AIOT可能成为智能家居应用的新趋势
- allegro怎么设置孔的属性_两种在Allegro中增加过孔的方法
- java提示找不到或无法加载主类
- CSS学习笔记-04 a标签-导航练习
- 02-print的用法
- IOS精品源码,仿探探UIButton封装iOS提示弹框迅速引导页自定义导航栏
- 测试到产品经理的进阶之路
- 自动驾驶算法-滤波器系列(八)——IMM交互多模型介绍
- 心电自动分析技术综述-Phililps DXL / GE Marquette / Glasgow / HES Hannover / Mortara
- [Android] 百度地图API Android相关配置教程(包含获取包名、发布版SHA1和开发版SHA1)
- C#编写刷机工具exe替代adb敲命令行操作
- 倪光南华为鸿蒙,倪光南谈华为鸿蒙:国产鸿蒙操作系统需要生态支持
- 前端文件下载兼容方案(兼容主流浏览器,包括IE与Safari)
- 微信支付中的p12证书提取公钥、私钥、证书、序列号等
- 随笔:说说第一次在android中嵌入非全屏显示的unity游戏时的坑之——界面切换时出现延迟/卡顿/花屏等现象解决方法
- AccountManager使用教程