题目链接

https://atcoder.jp/contests/agc031/tasks/agc031_d

题解

这居然真的是个找规律神题。。。

首先要明白置换的一些基本定义,置换\(p\)和\(q\)的复合\(a\)定义为\(a_i=p_{q_i}\), 记作\(a=pq\). 有定理\((pq)^{-1}=q^{-1}p^{-1}\).
显然题目里定义的\(f(p,q)=qp^{-1}\).
然后打表打出前几项:
\(a_1=p\)
\(a_2=q\)
\(a_3=qp^{-1}\)
\(a_4=qp^{-1}q^{-1}\)
\(a_5=qp^{-1}q^{-1}pq^{-1}\)
\(a_6=qp^{-1}q^{-1}p^2q^{-1}\)
\(a_7=qp^{-1}q^{-1}pqpq^{-1}\)
\(a_8=qp^{-1}q^{-1}pqp^{-1}qpq^{-1}\)
好像……规律并不明显啊……
好吧,结论是\(a_n=ga_{n-6}g^{-1}\), 其中\(g=qp^{-1}q^{-1}p\). (这是怎么看出来的……)
知道了结论,我们还是比较容易归纳证明的: 显然\(gg^{-1}=e\) (\(e\)为单位元,\(e_i=i\)), 于是\(a_n=(ga_{n-7}g^{-1})(ga_{n-8}g^{-1})^(-1)=ga_{n-7}a_{n-8}^{-1}g^{-1}=ga_{n-6}g^{-1}\).
于是设\(m'=\lfloor \frac{m-1}{6}\rfloor, n'=m-6m'\), \(a_n=g^{m'}n'g^{-m'}\), 直接快速幂计算即可,时间复杂度\(O(n\log m)\)或\(O(n)\).

代码

#include<cstdio>
#include<cstdlib>
#include<cassert>
#include<iostream>
using namespace std;inline int read()
{int x=0; bool f=1; char c=getchar();for(;!isdigit(c);c=getchar()) if(c=='-') f=0;for(; isdigit(c);c=getchar()) x=(x<<3)+(x<<1)+(c^'0');if(f) return x;return -x;
}const int N = 1e5;
const int lgM = 30;
int p[N+3],q[N+3],pp[N+3],qq[N+3];
int g[N+3],f[N+3],ff[N+3];
int tmp[N+3];
int aux[N+3];
int ans[N+3];
int a[7][N+3];
int n,m;int main()
{scanf("%d%d",&n,&m);for(int i=1; i<=n; i++) scanf("%d",&p[i]),pp[p[i]] = i;for(int i=1; i<=n; i++) scanf("%d",&q[i]),qq[q[i]] = i;for(int i=1; i<=n; i++) a[1][i] = p[i],a[2][i] = q[i];for(int k=3; k<=6; k++){for(int i=1; i<=n; i++) a[k][a[k-2][i]] = a[k-1][i];}for(int i=1; i<=n; i++) g[i] = q[pp[qq[p[i]]]],f[i] = i,tmp[i] = g[i];int nn = m%6==0?6:m%6; m = (m-1)/6;for(int i=0; m; i++){if(m&(1<<i)){m-=(1<<i);for(int j=1; j<=n; j++) aux[j] = f[tmp[j]];for(int j=1; j<=n; j++) f[j] = aux[j];}for(int j=1; j<=n; j++) aux[j] = tmp[tmp[j]];for(int j=1; j<=n; j++) tmp[j] = aux[j];}for(int i=1; i<=n; i++) ff[f[i]] = i;for(int i=1; i<=n; i++) ans[i] = f[a[nn][ff[i]]];for(int i=1; i<=n; i++) printf("%d ",ans[i]);return 0;
}

AtCoder AGC031D A Sequence of Permutations (群论、置换快速幂)相关推荐

  1. 专题·置换【including 置换,置换快速幂,洛谷·[HNOI2001]洗牌机

    前言:若您手中有一本<组合数学>,那么请翻到P330看书吧,书上讲的是真的好.本文也基本参考该书讲解] 本篇博客算是后期两周内会写的一篇关于Polya定理的专题的前置知识] 目录 一.置换 ...

  2. AtCoder Regular Contest 113训练赛(暴力,快速幂,贪心)

    ARC 113 传送门 A. A×B×C https://atcoder.jp/contests/arc113/tasks/arc113_a 题意 给定一个正整数K,求出正整数排列(A,B,C),使A ...

  3. POJ 2778 DNA Sequence —— (AC自动机+矩阵快速幂)

    距离上次做AC自动机有很久了=.=,以前这题的思路死活看不懂,现在还是觉得很好理解的. 思路参见:http://blog.csdn.net/morgan_xww/article/details/783 ...

  4. POJ 2778 DNA Sequence (自动机DP+矩阵快速幂)

    题意:给出m个致病DNA片段,求长为n且不含致病片段的DNA序列共有多少种. 数据范围:0 <= m <= 10,1 <= n <=2000000000 这题初看起来与上一题差 ...

  5. POJ 2778 DNA Sequence (AC自动机+矩阵快速幂)

    题目链接 MMM个病毒串,求长度为NNN的不包含病毒的字符串种类数 思路 把所有的病毒串建ACACAC自动机,failfailfail指针指向的节点如果标记过(包含病毒串)当前也是不合法串 . 然后我 ...

  6. 数学--数论--HDU - 6395 Let us define a sequence as below 分段矩阵快速幂

    Your job is simple, for each task, you should output Fn module 109+7. Input The first line has only ...

  7. 2019河北省大学生程序设计竞赛(重现赛)B 题 -Icebound and Sequence ( 等比数列求和的快速幂取模)...

    题目链接:https://ac.nowcoder.com/acm/contest/903/B 题意: 给你 q,n,p,求 q1+q2+...+qn 的和 模 p. 思路:一开始不会做,后面查了下发现 ...

  8. AtCoder AGC019E Shuffle and Swap (DP、FFT、多项式求逆、多项式快速幂)

    题目链接 https://atcoder.jp/contests/agc019/tasks/agc019_e 题解 tourist的神仙E题啊做不来做不来--这题我好像想歪了啊= =-- 首先我们可以 ...

  9. 数学--数论--HDU 4675 GCD of Sequence(莫比乌斯反演+卢卡斯定理求组合数+乘法逆元+快速幂取模)

    先放知识点: 莫比乌斯反演 卢卡斯定理求组合数 乘法逆元 快速幂取模 GCD of Sequence Alice is playing a game with Bob. Alice shows N i ...

最新文章

  1. 企业可视化报表工具选型经验分享
  2. 在Debian中建立Beaglebone black的应用开发环境之四:如何布置应用?
  3. activiti自己定义流程之Spring整合activiti-modeler实例(七):任务列表展示
  4. python 仪表盘-python+仪表
  5. 刚发现Source Insight发布新版本了
  6. 解决电脑无声和爆音问题的神器——SRS audio sandbox
  7. 前端框架:layui
  8. vs2013如何选择一个solution中的project来运行
  9. javscript 实现iframe加载内容页出现LOADING效果
  10. python 遍历文件夹 文件
  11. 软件开发人员,自身素质应该注意的问题!
  12. 电商金额计算的 4 个坑,千万注意了!
  13. html自适应布局源码,手机端页面自适应解决方案—rem布局进阶版(附源码示例)...
  14. 代理服务器等 和word上下角标 20110322
  15. MySQL(InnoDB剖析):08---InnoDB关键特性(插入缓冲(Insert Buffer)、两次写(doublewrite)、自适应哈希索引(AHI)、异步IO(AIO)、刷新邻接页)
  16. 主角把异能开发计算机,不容错过的超能力游戏,最厉害的甚至能操控时间!
  17. PyTorch-LSTM时间序列预测中如何预测真正的未来值
  18. 通达OA工作流程-使用方法
  19. 《创新者的基因》读书笔记
  20. 货币供应量M1M2与上证综合指数之间的相关性图示

热门文章

  1. wdpc配置https打不开
  2. 斯坦福CS231n项目实战(二):线性支持向量机SVM
  3. 北大中文期刊目录_最新版语言学C刊及北大核刊投稿方式全收录
  4. SQL数据库恢复后出现对象名无效(SQL Server备份还原时造成孤立用户的解决方案
  5. javascript中的事件处理
  6. 使程序不显示在任务栏上
  7. 实验四 查找和排序算法实现
  8. 输入有序数组返回下标
  9. Java对象的四种引用方式
  10. PyTorch基础(三)-----神经网络包nn和优化器optim