POJ 3087 Shuffle'm Up 线性同余,暴力 难度:2
http://poj.org/problem?id=3087
设:s1={A1,A2,A3,...Ac}
s2={Ac+1,Ac+2,Ac+3,....A2c}
则
合在一起成为
Ac+1,A1,Ac+2,A2......A2c,Ac
经过一次转换之后变成
s1={Ac+1,A1,Ac+2.....}
s2={...A2c,Ac}
对应之前,每个数的序号发生的变化是
+1,+2,+3....-c,-c+1,.....
把整个数链想成环,也相当于是:
+1,+2,+3....+c,+c+1,.......
例如A1,由A1->A2->A4->A7....c次之后必然回到A1
所以整个串经过一定次数的变换一定会回到最初状态,只需判断在回到最初状态之前有没有得到目标状态即可
#include <cstdio>//a=(a+c+1)%(2*c)
#include <cstring>
using namespace std;
const int maxn=1002;
int c;
char s1[maxn],s2[maxn],aim[maxn],org[maxn],tmp[maxn];
void shuffle(){
for(int i=0;i<c;i++){
tmp[2*i]=s2[i];
tmp[2*i+1]=s1[i];
}
tmp[2*c]=0;
}
int main(){
int T;
scanf("%d",&T);
for(int ti=1;ti<=T;ti++){
scanf("%d%s%s%s",&c,s1,s2,aim);
shuffle();
strcpy(org,tmp);
int ans=1;
if(strcmp(tmp,aim)==0){
printf("%d 1\n",ti);
continue;
}
bool fl=false;
while(strcmp(org,tmp)!=0||ans==1){
strncpy(s1,tmp,c);
strncpy(s2,tmp+c,c);
shuffle();
ans++;
if(strcmp(tmp,aim)==0){
fl=true;
printf("%d %d\n",ti,ans);
break;
}
}
if(!fl)printf("%d -1\n",ti);
}
return 0;
}
POJ 3087 Shuffle'm Up 线性同余,暴力 难度:2的更多相关文章
- POJ 3087 Shuffle'm Up(洗牌)
POJ 3087 Shuffle'm Up(洗牌) Time Limit: 1000MS Memory Limit: 65536K Description - 题目描述 A common pas ...
- POJ.3087 Shuffle'm Up (模拟)
POJ.3087 Shuffle'm Up (模拟) 题意分析 给定两个长度为len的字符串s1和s2, 接着给出一个长度为len*2的字符串s12. 将字符串s1和s2通过一定的变换变成s12,找到 ...
- DFS POJ 3087 Shuffle'm Up
题目传送门 /* 题意:两块扑克牌按照顺序叠起来后,把下半部分给第一块,上半部给第二块,一直持续下去,直到叠成指定的样子 DFS:直接模拟搜索,用map记录该字符串是否被搜过.读懂题目是关键. */ ...
- POJ 3087 Shuffle'm Up
Shuffle'm Up Time Limit:1000MS Memory Limit:65536KB 64bit IO Format:%I64d & %I64u Submit ...
- poj 3087 Shuffle'm Up ( map 模拟 )
题目:http://poj.org/problem?id=3087 题意:已知两堆牌s1和s2的初始状态, 其牌数均为c,按给定规则能将他们相互交叉组合成一堆牌s12,再将s12的最底下的c块牌归为s ...
- POJ 3087 Shuffle'm Up (模拟+map)
题目链接:http://poj.org/problem?id=3087 题目大意:已知两堆牌s1和s2的初始状态, 其牌数均为c,按给定规则能将他们相互交叉组合成一堆牌s12,再将s12的最底下的c块 ...
- POJ 3087 Shuffle'm Up DFS
link:http://poj.org/problem?id=3087 题意:给你两串字串(必定偶数长),按照扑克牌那样的洗法(每次从S2堆底中拿第一张,再从S1堆底拿一张放在上面),洗好后的一堆可以 ...
- [暴力搜索] POJ 3087 Shuffle'm Up
Shuffle'm Up Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 10003 Accepted: 4631 Des ...
- (简单) POJ 3087 Shuffle'm Up,枚举。
Description A common pastime for poker players at a poker table is to shuffle stacks of chips. Shuff ...
随机推荐
- windos 查看指定端口,将指定进程杀死
>netstat -aon | findstr “80″ Proto Local Address Foreign Address State ...
- KL与JS散度学习[转载]
转自:https://www.jianshu.com/p/43318a3dc715?from=timeline&isappinstalled=0 https://blog.csdn.net/e ...
- linux安装Navicat,界面出现乱码解决方法
下载Navicat:navicat112_mariadb_cs_x64.tar.gz 点击" ./start_navicat"安装出现界面便面为乱码 解决办法:打开start_na ...
- 1:1 Struts2概述
jar包下载
- 39. Combination Sum(回溯)
Given a set of candidate numbers (candidates) (without duplicates) and a target number (target), fin ...
- 【转载】JS Number类型数字位数及IEEE754标准
JS的基础类型Number,遵循 IEEE 754 规范,采用双精度存储(double precision),占用 64 bit.如图 意义 1位用来表示符号位 11位用来表示指数 52位表示尾数 浮 ...
- java fastjson 设置全局输出name最小化
1.通过自定义Filter实现 https://github.com/alibaba/fastjson/wiki/SerializeFilter public class JackJsonLowCas ...
- .net core 2.2 & Mongodb
.net core 2.2 API项目中使用Mongodb 简单的CRUD封装 创建FoodPlan.Core 项目 创建IEntityBase.cs 接口约束 创建Single.cs 实体 IEnt ...
- Java传统下载和SpringMVC下载
/** * 传统下载 * @param filename 文件名称 */ @RequestMapping(value="download", method={RequestMeth ...
- zabbix-2.4.7环境部署与初始化安装
一.zabbix简介: zabbix的特点: - 安装与配置简单,学习成本低 - 支持多语言(包括中文) - 免费开源 - 自动发现服务器与网络设备 - 分布式监视以及WEB集中管理功能 - 可以无a ...