https://www.bnuoj.com/v3/contest_show.php?cid=9146#problem/G

【题意】

题意很简单,就是“鸽尾式”洗扑克,问洗m次各张牌的位置

【思路】

牌是有限的,所以这个置换一定是有周期的。s1和s2中固定位置总会被置换到Shuffle中的固定位置,比如s1中的1总会被置换到shuffle中的2,s1中的2总会被置换到shuffle中的4,我们只需要找出这个置换里的几个轮换。如第一个样例1->2->4->8->7->5->1

【Accepted】

 #include<iostream>
#include<cstdio>
#include<cmath>
#include<algorithm>
#include<string>
#include<cstring>
#include<vector>
using namespace std;
typedef long long ll;
typedef double db;
const int mod=1e8;
int n,m;
const int maxn=1e5+;
char pk[maxn][];
int nxt[maxn];
vector<int> cyc[maxn];
int vis[maxn];
int ans[maxn];
int anss[maxn];
int main()
{
int T;
scanf("%d",&T);
int cas=;
while(T--)
{
memset(vis,,sizeof(vis));
memset(ans,,sizeof(ans));
memset(anss,,sizeof(anss));
scanf("%d%d",&n,&m);
for(int i=;i<n;i++)
{
scanf("%s",pk[i]);
}
for(int i=;i<(n+)/;i++)
{
nxt[i]=*i;
}
for(int i=(n+)/;i<n;i++)
{
nxt[i]=*(i-(n+)/)+;
}
for(int i=;i<n;i++)
{
cyc[i].clear();
}
int cntc=;
for(int i=;i<n;i++)
{
if(!vis[i])
{
cyc[cntc].push_back(i);
vis[i]=;
int cur=i;
while(!vis[nxt[cur]])
{
cur=nxt[cur];
vis[cur]=;
cyc[cntc].push_back(cur);
}
cntc++;
}
}
for(int i=;i<cntc;i++)
{
int len=cyc[i].size();
for(int k=;k<len;k++)
{
ans[cyc[i][k]]=cyc[i][(k+m)%len];
}
}
for(int i=;i<n;i++)
{
anss[ans[i]]=i;
}
for(int i=;i<n;i++)
{
puts(pk[anss[i]]);
}
}
return ;
}

【置换】G. Poker 2.0的更多相关文章

  1. csharp: ODP.NET,System.Data.OracleClient(.net 4.0) and System.Data.OleDb读取Oracle g 11.2.0的区别

    ODP.NET: 引用: using Oracle.DataAccess; //Oracle g 11.2.0 using Oracle.DataAccess.Client; using Oracle ...

  2. 郑轻校赛题目 问题 G: 多少个0

    问题 G: 多少个0 时间限制: 1 Sec  内存限制: 128 MB提交: 192  解决: 40 题目描述 一个n*n的方格,每个格子中间有一个数字是2或者5,现在从方格的左上角走到右下角,每次 ...

  3. POJ 2240 && ZOJ 1082 Arbitrage 最短路,c++ stl pass g++ tle 难度:0

    http://poj.org/problem?id=2240 用log化乘法为加法找正圈 c++ 110ms,g++tle #include <string> #include <m ...

  4. luoguP4709 信息传递 置换 + 多项式exp

    感觉我的做法并不是最优做法... 考虑一个置换\(g\)中的一个置换环\(S\) 在\(g^n\)的形态中,它变为了\(gcd(n, |S|)\)个长度相同的置换环 那么,我们考虑对\(f\)的所有置 ...

  5. LRU(Least Recently Used)最近未使用置换算法--c实现

    在OS中,一些程序的大小超过内存的大小(比如好几十G的游戏要在16G的内存上跑),便产生了虚拟内存的概念 我们通过给每个进程适当的物理块(内存),只让经常被调用的页面常驻在物理块上,不常用的页面就放在 ...

  6. 单位圆盘的全纯自同构群Aut B(0,1)

    利用Schwarz引理可以求出单位圆盘$B(0,1)$的全纯自同构群${\rm Aut}B(0,1)$. 任取$a\in B(0,1)$,记$$\varphi_{a}(z)=\frac{a-z}{1- ...

  7. 结对编程--基于android平台的黄金点游戏(2.0版本)

    在昨天上传完博客之后发现一个重大的bug...故在此推出2.0版本. 博文详情见:http://www.cnblogs.com/RayShea/p/5372398.html coding地址:http ...

  8. EAA脚本语言0.2

    对上一版的改进.IL生成问题大部分解决了. 运行效果 脚本源码 #using "System"; #using "System.Drawing"; #using ...

  9. Node Express 4.0 安装

    前言 今天想要用nodejs 写个后台服务,很久之前看过node express 框架,可真当向下手安装的时候,发现好多命令都不记得了.写完后台服务,没事了,总结了下安装过程,记录一下,以便以后查阅方 ...

随机推荐

  1. 远程访问rhel7的oracle中的问题

    客户端得到的错误信息通常是:ORA-12170: TNS:连接超时 这时,我们基本可以肯定是服务器没有开放1521端口(假设你用默认设置) 解决方法: (1)假如你是在一个局域网环境,配置了防火墙.那 ...

  2. Ionic之页面传值

    很多时候,我们都进入一个页面往往都是需要将上一级的数据转入到下一级页面中使用,在传传统的html中时经过url来传值,所以ionic也是沿用了html中的方法. 但是还是有点区别于html.我们直接在 ...

  3. P1789 【Mc生存】插火把

    题目背景 初一党应该都知道...... 题目描述 话说有一天linyorson在Mc开了一个超平坦世界,他把这个世界看成一个n*n的方阵,现在他有m个火把和k个萤石,分别放在x1,y1...xm,ym ...

  4. asp.net 线程批量导入数据,ajax获取执行状态

    最近做了一个批量导入功能,长时间运行,没个反馈状态,很容易让人看了心急,产生各种臆想!为了解决心里障碍,写了这么个功能. 通过线程执行导入,并把正在执行的状态存入session,既共享执行状态,通过a ...

  5. H+后台主题UI框架---整理(二)

    本篇文章是针对H+后台主题UI框架的整理的第二部分.主要只有一个point.如下: 其代码如下: <div class="ibox float-e-margins"> ...

  6. 如何配置TomCat

    1.先查看你自己java的jdk的版本号 2.通过jdk版本号确定下载的Tomcat版本 ,因为我的是jdk 1.8的,所以要下载Tomcat 8版本 附上下载官网http://tomcat.apac ...

  7. Java Web 开发中路径相关问题小结

    Java Web开发中路径问题小结 (1) Web开发中路径的几个基本概念 假设在浏览器中访问了如下的页面,如图1所示: 图1 Eclipse中目录结构如图2所示: 图2 那么针对这个站点的几个基本概 ...

  8. mkdir与makedirs

    mkdir创建的是一级目录 makedirs可以创建多级目录 mkdir -p可以递归创建目录

  9. PHP10 错误和异常处理

    学习要点 修改错误报告级别 写错误日志 异常处理实现 自定义异常 捕获多路异常   错误处理 定义 错误:开发过程中的失误.用户操作引起的错误. 错误产生原因 语法错误:开发环境提示,未修正则脚本无法 ...

  10. 第1节 flume:8、flume采集某个文件内容到hdfs上

    2.         采集文件内容到HDFS 需求分析: 采集需求:比如业务系统使用log4j生成的日志,日志内容不断增加,需要把追加到日志文件中的数据实时采集到hdfs. 同一个日志文件的内容不断增 ...