1898: 复盘拉火车

Submit Page   Summary   Time Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: 114     Solved: 36


Description

小GJ和小XS没事做用扑克牌玩起了小时候的拉火车游戏。规则如下,GJ和XS交替依次把手中的牌放到桌面上,由于GJ年长,所以他总是先放。桌面上会构成一个新的序列,当这个序列中新放入的点数与以前存在的某个点数重复的时候,这两张重复的牌和中间的牌就依次全部放回所放牌一方的序列尾部。 例如桌面上有牌A 10 2 3 5此时GJ放下一张2则桌面上剩下A 10而2 3 5 2这个序列放到GJ原本手中牌序列的尾部。

Input

有T(T<=20)组数据。 每组第一行给出GJ目前手中牌的数量N1(N1<=100)和这个手牌序列的点数各是多少 (点数可能为 A 2 3 4 5 6 7 8 9 10 J Q K) 第二行给出XS目前手中牌的数量N2(N2<=100)和这个手牌序列的点数各是多少 第三行给出一个数字K,问进行K(K<=2xN1 且 K<=2xN2)次放牌后,桌面上的序列和两个人的手牌序列是怎样的。

Output

每组数据给出3行输出,桌面上的扑克序列,小GJ的手牌序列和小XS的手牌序列。具体格式见样例。 每组数据后加空行间隔。

Sample Input

2
10 A 2 3 4 5 6 7 8 9 10
5 2 2 3 4 5
5
5 2 2 2 2 5
5 A 3 4 J K
10

Sample Output

Deck: A 2 3
GJ: 4 5 6 7 8 9 10 2 2
XS: 3 4 5 Deck: 3 J 5 K
GJ: 2 A 2 2 4 2
XS:

Hint

Source

中南大学第十一届大学生程序设计竞赛

Author

OTTFF

题解:完完全全的模拟题

 #include<iostream>
#include<string>
#include<cstdio>
#include<stack>
#include<map>
#include<algorithm>
using namespace std;
char a[],b[],c[];
map<char,int>mp;
int main()
{ int n;
scanf("%d",&n);
int num1,num2,k;
int r1,r2,r3;
while(n--)
{
r1=r2=r3=;
char ch;
scanf("%d",&num1);
for(int i=;i<num1;++i)
{
getchar();
scanf("%c",&a[i]);
if(a[i]=='')scanf("%c",&ch);
mp[a[i]]=-;
}
scanf("%d",&num2);
for(int i=;i<num2;++i)
{
getchar();
scanf("%c",&b[i]);
if(b[i]=='')scanf("%c",&ch);
mp[b[i]]=-;
}
scanf("%d",&k); for(int i=;i<k;++i)
{
if(!(i%))
{
// printf("GJ放牌:");
if(mp[a[r1]]==-)
{
// printf("无牌可收\n");
mp[a[r1]]=r3;
c[r3++]=a[r1];
}
else{
// printf("%d有牌可收\n",mp[a[r1]]);
c[r3++]=a[r1];
int rk=r3;
r3=mp[a[r1]];
for(int j=mp[a[r1]];j<rk;++j)
{
a[num1++]=c[j];
mp[c[j]]=-;
} }
r1++;
}
else
{
// printf("XS放牌:");
if(mp[b[r2]]==-)
{
// printf("无牌可收\n");
mp[b[r2]]=r3;
c[r3++]=b[r2];
}
else{
// printf("%d有牌可收\n",mp[b[r2]]);
c[r3++]=b[r2];
int rr=r3;
r3=mp[b[r2]];
for(int j=mp[b[r2]];j<rr;++j)
{
b[num2++]=c[j];
mp[c[j]]=-;
}
}
r2++;
}
}
printf("Deck:");
for(int i=;i<r3;++i)
{
printf(" %c",c[i]);
if(c[i]=='')printf("");
}
printf("\nGJ:");
for(int i=r1;i<num1;++i)
{
printf(" %c",a[i]);
if(a[i]=='')printf("");
}
printf("\nXS:");
for(int i=r2;i<num2;++i)
{
printf(" %c",b[i]);
if(b[i]=='')printf("");
}printf("\n");
printf("\n");
}
return ;
}

csu 1898: 复盘拉火车的更多相关文章

  1. js数据结构之栈、队列(数据结构与拉火车游戏)

    1.js实现队列的数据结构(先进先出) function Queue (array) { if(Object.prototype.toString.call(array)!="[object ...

  2. csu 1552(米勒拉宾素数测试+二分图匹配)

    1552: Friends Time Limit: 3 Sec  Memory Limit: 256 MBSubmit: 723  Solved: 198[Submit][Status][Web Bo ...

  3. csps2019记

    Day0: 上午疯狂颓板子(树状数组,KMP)屁都没考,感觉海星. 上午坐大巴去了德州,中午和skyh凑钱吃饭(其实是我请他)rp++. 下午在火车上和侯神打扑克,拉火车之神Get. 到燕大试机,敲了 ...

  4. 借助 dp 公式去优化

    题目描述 一天,神犇和 LCR 在玩扑克牌.他们玩的是一种叫做“接竹竿”的游戏. 游戏规则是:一共有 nnn 张牌,每张牌上有一个花色 ccc 和一个点数 vvv,花色不超过 kkk 种.将这些牌依次 ...

  5. 2017 省赛选拨 火车入站 CSU 1757 模拟

    1757: 火车入站 Submit Page   Summary   Time Limit: 1 Sec     Memory Limit: 128 Mb     Submitted: 512     ...

  6. 外卖的撕‘哔’大战 CSU 1559

                                                      CSU 1559 Time Limit:1000MS     Memory Limit:131072 ...

  7. Swing开发界面时的一个bug复盘

    问题:QA突然发个截图说一个Dialog上展示的东西变形了 分析:不理解,什么也没做,怎么会变形,刚刚我用的时候还正常.看看代码,的确什么也没更改:在本地测一下,也没有问题:baidu,bing,st ...

  8. 关于ACM,关于CSU

    原文地址:http://tieba.baidu.com/p/2432943599 前言: 即将进入研二,ACM的事情也渐渐远去,记忆终将模糊,但那段奋斗永远让人热血沸腾.开个贴讲讲ACM与中南的故事, ...

  9. JS列表的下拉菜单组件(仿美化控件select)

    JS列表的下拉菜单组件(仿美化控件select) 2014-01-23 23:51 by 龙恩0707, 1101 阅读, 6 评论, 收藏, 编辑 今天是农历23 也是小年,在这祝福大家新年快乐!今 ...

随机推荐

  1. 073_使用 shell 脚本打印如下图形

    #!/bin/bash #打印第一组图片#for(())为类 C 语言的语法格式,也可以使用 for i in;do;done 的格式替换#for((i=1;i<=9;i++))循环会执行 9 ...

  2. WINDOWS 10下64位本地 ORACLE 11 G安装完整教程

    URL:https://www.cnblogs.com/count-mjb/p/7655592.html wssbht = (DESCRIPTION = (ADDRESS_LIST = (ADDRES ...

  3. Linux swap的创建与配置

    在Linux下,swap的作用类似Windows系统下的“虚拟内存”.当物理内存不足时,拿出部分硬盘空间当SWAP分区(虚拟成内存)使用,从而解决内存容量不足的情况.Linux下的swap有两种实现形 ...

  4. luogu 2617

    动态区间 $k$ 大主席树 + 树状数组树状数组的每个点对应一颗线段树首先将所有点加入数据结构 枚举 x code: for(int i = x; i <= n; i += Lowbit(i)) ...

  5. 「CF150E」Freezing with Style「点分治」「单调队列」

    题意 给定一颗带边权的树,求一条边数在\(L\).\(R\)之间的路径,并使得路径上边权的中位数最大.输出一条可行路径的两个端点.这里若有偶数个数,中位数为中间靠右的那个. \(n, L, R\leq ...

  6. rdma centos 7.3安装

    rdma centos 7.3安装 corasql0人评论7680人阅读2017-05-28 16:29:40   1.安装依赖包 yum install epel-release -y   yum  ...

  7. xshel链接linuxl安装nginx

    原文链接:https://blog.csdn.net/Sweet__dream/article/details/78256952?utm_source=blogxgwz9 这个连接更详细:https: ...

  8. 【java8新特性】日期和时间

    Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本. Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript ...

  9. angularJs 中controller与sever

    网上找到的一个例子,感觉对于初学者理解将controller抽成服务有帮助.主要是方便理解什么时候应该来做服务. html部分 <!DOCTYPE html> <html ng-ap ...

  10. 免sudo使用docker

    前沿:通过root安装完docker,在普通用户下执行docker相关命令的时候,报权限不足: 查看sock文件的权限: [hadoop@slave1 monitor]$ ll /var/run/do ...