UVALive - 3510 Pixel Shuffle (置换)
有一个n*n的图像和7种置换,以及一个置换序列,求将这个序列重复做几次能得到原图像。
将这些置换序列乘起来可得到一个最终置换,这个置换所有循环节的长度的lcm即为答案。
注意置换是从右往左进行的,开始没仔细读题,debug到崩溃~~
#include<bits/stdc++.h>
using namespace std;
typedef unsigned long long ll;
const int N=+;
typedef vector<int> Per;
Per operator*(const Per& a,const Per& b) {
Per c(a.size());
for(int i=; i<c.size(); ++i)c[i]=b[a[i]];
return c;
}
Per inv(const Per& a) {
Per c(a.size());
for(int i=; i<c.size(); ++i)c[a[i]]=i;
return c;
}
Per a[][];
int n,k,ka;
int f(int i,int j) {return i*n+j;}
string line;
int vis[N*N];
ll lcm(ll a,ll b) {return a/__gcd(a,b)*b;}
int main() {
int T;
for(scanf("%d",&T); T--;) {
!ka?++ka:puts("");
scanf("%d ",&n);
for(int i=; i<; ++i)a[i][].resize(n*n);
for(int i=; i<n; ++i)
for(int j=; j<n; ++j) {
a[][][f(i,j)]=f(i,j);
a[][][f(i,j)]=f(n--j,i);
a[][][f(i,j)]=f(i,n--j);
a[][][f(i,j)]=i<n/?f(i,j):f(i,n--j);
a[][][f(i,j)]=i<n/?f(i,j):f(n--i+n/,j);
a[][][f(i,j)]=i&?f(i/+n/,j):f(i/,j);
a[][][f(i,j)]=i&?f(i-(j&^),j/+n/):f(i+(j&),j/);
}
for(int i=; i<; ++i)a[i][]=inv(a[i][]);
swap(a[][],a[][]);
Per p=a[][];
getline(cin,line);
stringstream ss(line);
string s;
while(ss>>s) {
int t=;
if(s.back()=='-')t=,s.pop_back();
if(s=="id")p=a[][t]*p;
else if(s=="rot")p=a[][t]*p;
else if(s=="sym")p=a[][t]*p;
else if(s=="bhsym")p=a[][t]*p;
else if(s=="bvsym")p=a[][t]*p;
else if(s=="div")p=a[][t]*p;
else if(s=="mix")p=a[][t]*p;
}
memset(vis,,sizeof vis);
ll ans=;
for(int i=; i<p.size(); ++i)if(!vis[i]) {
ll cnt=;
vis[i]=;
for(int j=p[i]; j!=i; vis[j]=,j=p[j])++cnt;
ans=lcm(ans,cnt);
}
printf("%lld\n",ans);
}
return ;
}
UVALive - 3510 Pixel Shuffle (置换)的更多相关文章
- UVA 1156 - Pixel Shuffle(模拟+置换)
UVA 1156 - Pixel Shuffle 题目链接 题意:依据题目中的变换方式,给定一串变换方式,问须要运行几次才干回复原图像 思路:这题恶心的一比,先模拟求出一次变换后的相应的矩阵,然后对该 ...
- LA 3510 (置换 循环分解) Pixel Shuffle
思路挺简单的,题目中的每个命令(包括命令的逆)相当于一个置换. 用O(n2k)的时间复杂度从右往左求出这些置换的乘积A,然后求m使Am = I(I为全等置换) 还是先把A分解循环,m则等于所有循环节长 ...
- 2020牛客暑期多校训练营 第二场 J Just Shuffle 置换 群论
LINK:Just Shuffle 比较怂群论 因为没怎么学过 置换也是刚理解. 这道题是 已知一个置换\(A\)求一个置换P 两个置换的关键为\(P^k=A\) 且k是一个大质数. 做法是李指导教我 ...
- LA3510 Pixel Shuffle
题意 PDF 分析 思路挺简单的,题目中的每个命令(包括命令的逆)相当于一个置换. 用\(O(n^2k)\)的时间复杂度从右往左求出这些置换的乘积A,然后求m使Am = I(I为全等置换) 还是先把A ...
- Learning to Promote Saliency Detectors
Learning to Promote Saliency Detectors 原本放在了思否上, 但是公式支持不好, csdn广告太多, 在博客园/掘金上发一下 https://github.com/ ...
- 上采样 及 Sub-pixel Convolution (子像素卷积)
参考:https://blog.csdn.net/leviopku/article/details/84975282 参考:https://blog.csdn.net/g11d111/article/ ...
- Speech Super Resolution Generative Adversarial Network
博客作者:凌逆战 博客地址:https://www.cnblogs.com/LXP-Never/p/10874993.html 论文作者:Sefik Emre Eskimez , Kazuhito K ...
- Leonardo's Notebook UVALive - 3641(置换)
题意: 给出26个大写字母的置换B,问是否存在一个置换A,使得A2 = B 解析: 两个长度为n的相同循环相乘,1.当n为奇数时结果也是一个长度为n的循环:2. 当n为偶数时分裂为两个长度为n/2 ( ...
- UVaLive 3641 Leonardo's Notebook (置换)
题意:给定一个置换 B 问是否则存在一个置换 A ,使用 A^2 = B. 析:可以自己画一画,假设 A = (a1, a2, a3)(b1, b2, b3, b4),那么 A^2 = (a1, a2 ...
随机推荐
- QT5中编译存在的几个问题(LNK2019,构造函数不能有返回类型)
1. 自己构造新类,注意必须在头文件最后加上分号 写个c++类报“构造函数不能有返回类型”, 谷歌一下,才找到原因: 原来是我定义的类后面没有用“:”结尾,构造函数默认把整个类作为返回值了 2. 新建 ...
- C++实现生产者和消费者
传统的生产者消费者模型 生产者-消费者模式是一个十分经典的多线程并发协作的模式,弄懂生产者-消费者问题能够让我们对并发编程的理解加深.所谓生产者-消费者问题,实际上主要是包含了两类线程,一种是生产者线 ...
- re 正则匹配的非贪婪匹配
非贪婪匹配 将尽可能少的匹配内容,当?出现在其他的重复次数后面时会将贪婪模式改为非贪婪模式. ? 如 abc.*? abc.+? 非贪婪匹配:尽可能少的匹配{n,}?{,n}?{n,m}?*? # * ...
- Typora快捷键记录
目前使用的是Typora这款Markdown软件,记录一下快捷键用法: 1.无序列表,黑色实心圆点或白色空心圆点 首先去除缩进,使用“Ctrl”+"["键或者“Shift”+&qu ...
- 目前最新u盘启动快捷热键一览表
现在重装系统已不再是件难事了,一个普通的u盘就可以帮你搞定,但是对于一些新手来说在使用u盘启动盘安装系统是也许会遇到这样的小问题,面对一台新电脑时不知道该如何让电脑优先访问u盘从而进入PE系统下进行装 ...
- python 爬虫 目录
爬虫 介绍 python 爬虫 urllib模块 python 爬虫 requests模块
- 吉首大学2019年程序设计竞赛(重现赛)-J(树形DP)
题目链接:https://ac.nowcoder.com/acm/contest/992/J 题意:题意很清晰,就是求任意两点距离的和,结果对1e9+7取模. 思路:裸的树形DP题,一条边的贡献值=这 ...
- 如何用纯 CSS 创作一个精彩的彩虹 loading 特效
效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/vjvoow 可交互视频教 ...
- windows下php配置环境变量
这样重启终端后,通过php -v可查看新使用的php版本信息. 注:在path配置在上方的先生效
- 错误:SyntaxError: identifier starts immediately after numeric literal
转载:http://blog.csdn.net/shalousun/article/details/39995443在用JavaScript时,当你使用一个字符传作为函数的参数常常会看到语法错误,在f ...