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】

  1. #include<iostream>
  2. #include<cstdio>
  3. #include<cmath>
  4. #include<algorithm>
  5. #include<string>
  6. #include<cstring>
  7. #include<vector>
  8. using namespace std;
  9. typedef long long ll;
  10. typedef double db;
  11. const int mod=1e8;
  12. int n,m;
  13. const int maxn=1e5+;
  14. char pk[maxn][];
  15. int nxt[maxn];
  16. vector<int> cyc[maxn];
  17. int vis[maxn];
  18. int ans[maxn];
  19. int anss[maxn];
  20. int main()
  21. {
  22. int T;
  23. scanf("%d",&T);
  24. int cas=;
  25. while(T--)
  26. {
  27. memset(vis,,sizeof(vis));
  28. memset(ans,,sizeof(ans));
  29. memset(anss,,sizeof(anss));
  30. scanf("%d%d",&n,&m);
  31. for(int i=;i<n;i++)
  32. {
  33. scanf("%s",pk[i]);
  34. }
  35. for(int i=;i<(n+)/;i++)
  36. {
  37. nxt[i]=*i;
  38. }
  39. for(int i=(n+)/;i<n;i++)
  40. {
  41. nxt[i]=*(i-(n+)/)+;
  42. }
  43. for(int i=;i<n;i++)
  44. {
  45. cyc[i].clear();
  46. }
  47. int cntc=;
  48. for(int i=;i<n;i++)
  49. {
  50. if(!vis[i])
  51. {
  52. cyc[cntc].push_back(i);
  53. vis[i]=;
  54. int cur=i;
  55. while(!vis[nxt[cur]])
  56. {
  57. cur=nxt[cur];
  58. vis[cur]=;
  59. cyc[cntc].push_back(cur);
  60. }
  61. cntc++;
  62. }
  63. }
  64. for(int i=;i<cntc;i++)
  65. {
  66. int len=cyc[i].size();
  67. for(int k=;k<len;k++)
  68. {
  69. ans[cyc[i][k]]=cyc[i][(k+m)%len];
  70. }
  71. }
  72. for(int i=;i<n;i++)
  73. {
  74. anss[ans[i]]=i;
  75. }
  76. for(int i=;i<n;i++)
  77. {
  78. puts(pk[anss[i]]);
  79. }
  80. }
  81. return ;
  82. }

【置换】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. Java 学习列表

    这是从450家企业的招聘信息中统计而来,相对来说还是比较真实的,虽然有些公司的招聘要求万年不变,但还是可以大致反应企业的招聘要求的.

  2. P1720 月落乌啼算钱

    题目背景 (本道题目木有以藏歌曲……不用猜了……) <爱与愁的故事第一弹·heartache>最终章. 吃完pizza,月落乌啼知道超出自己的预算了.为了不在爱与愁大神面前献丑,只好还是硬 ...

  3. 【ADO.NET】 基础 (SQL Server)

    一.Web.config配置 <connectionStrings> <add name="constr_name" connectionString=" ...

  4. Spring Boot整合Spring Batch

    引言 Spring Batch是处理大量数据操作的一个框架,主要用来读取大量数据,然后进行一定的处理后输出指定的形式.比如我们可以将csv文件中的数据(数据量几百万甚至几千万都是没问题的)批处理插入保 ...

  5. 【数据分析 R语言实战】学习笔记 第五章 数据的描述性分析(下)

    5.6 多组数据分析及R实现 5.6.1 多组数据的统计分析 > group=read.csv("C:/Program Files/RStudio/002582.csv") ...

  6. checking for gcc... no

    ./configure 后显示checking for gcc... nochecking for cc... nochecking for cl.exe... noconfigure.sh:erro ...

  7. laravel核心思想

    服务容器.依赖注入.门脸模式 服务容器 容器概念 用来装一个个实例的对象,比如邮件类. IOC控制反转 IOC(Inversion of Control)控制反转,面向对象,可降低代码之间的耦合度,借 ...

  8. UVA 10288 Coupons 彩票 (数学期望)

    题意:一种刮刮卡一共有n种图案,每张可刮出一个图案,收集n种就有奖,问平均情况下买多少张才能中奖?用最简的分数形式表示答案.n<=33. 思路:这题实在好人,n<=33.用longlong ...

  9. How To Build Kubernetes Platform (构建Kubernetes平台方案参考)

    Architecture Architecture Diagram Non-Prod Environment Prod Environment Cluster Networking Container ...

  10. 深度剖析 MySQL 事务隔离

    概述 今天主要分享下MySQL事务隔离级别的实现原理,因为只有InnoDB支持事务,所以这里的事务隔离级别是指InnoDB下的事务隔离级别. 隔离级别 读未提交:一个事务可以读取到另一个事务未提交的修 ...