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. React重置非受控组件state的方法

    如果想通过props来重置state的值.有3种方法: 1. 最好的方法:key属性 修改key属性的值,可以使组件卸载后重新加载.所有的状态全部重置. 这种情况可以给key设一个每次渲染都会改变的值 ...

  2. HttpURLConnection getInputStream 400异常的解决

    判断getResponseCode,当返回不是HttpURLConnection.HTTP_OK, HttpURLConnection.HTTP_CREATED, HttpURLConnection. ...

  3. 12 | 为什么我的MySQL会“抖”一下?

    平时的工作中,不知道你有没有遇到过这样的场景,一条SQL语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很难复现,它不只随机,而且持续时间还很短. 看上去,这就像 ...

  4. ASCII和Unicode编码的区别

    归纳: 编码 大小 支持语言 ASCII 1个字节 英文 Unicode 2个字节(生僻字4个) 所有语言 UTF-8 1-6个字节,英文字母1个字节,汉字3个字节,生僻字4-6个字节 所有语言 具体 ...

  5. greenplum(postgresql) 数据字典

    greenplum是基于postgresql开发的分布式数据库,里面大部分的数据字典是一样的.我们在维护gp的时候对gp的数据字典比较熟悉,特此分享给大家.在这里不会详细介绍每个字典的内容,只会介绍常 ...

  6. Linux 理解 %iowait (%wio)

    理解 %iowait (%wio) 2016/02/25 %iowait 是 “sar -u” 等工具检查CPU使用率时显示的一个指标,在Linux上显示为 %iowait,在有的Unix版本上显示为 ...

  7. python一些实用的小工具

    1  搭一个简易的本地局域网  python -m http.server 2 获取当前目录下的所有文件名 3 进度条效果 import sys,time for i in range(50): sy ...

  8. MySQL 聚集拼接

    GROUP_CONCAT()函数 示例: 假设现在有这样一个表结构: 其中`student`.`school_id`是逻辑外键 想要检索出所有学校,其中学校下的学生名需要拼接在一起,作为结果集的字段 ...

  9. 多项式求逆/分治FFT 学习笔记

    一.多项式求逆 给定一个多项式 \(F(x)\),请求出一个多项式 \(G(x)\), 满足 \(F(x) * G(x) \equiv 1 ( \mathrm{mod\:} x^n )\).系数对 \ ...

  10. sonca排除不扫描文件

    在pom.xml文件中的<properties>标签下加上<sonar.exclusions>XXX</sonar.exclusions>标签,如下 <pro ...