csu 1898: 复盘拉火车
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: 复盘拉火车的更多相关文章
- js数据结构之栈、队列(数据结构与拉火车游戏)
1.js实现队列的数据结构(先进先出) function Queue (array) { if(Object.prototype.toString.call(array)!="[object ...
- csu 1552(米勒拉宾素数测试+二分图匹配)
1552: Friends Time Limit: 3 Sec Memory Limit: 256 MBSubmit: 723 Solved: 198[Submit][Status][Web Bo ...
- csps2019记
Day0: 上午疯狂颓板子(树状数组,KMP)屁都没考,感觉海星. 上午坐大巴去了德州,中午和skyh凑钱吃饭(其实是我请他)rp++. 下午在火车上和侯神打扑克,拉火车之神Get. 到燕大试机,敲了 ...
- 借助 dp 公式去优化
题目描述 一天,神犇和 LCR 在玩扑克牌.他们玩的是一种叫做“接竹竿”的游戏. 游戏规则是:一共有 nnn 张牌,每张牌上有一个花色 ccc 和一个点数 vvv,花色不超过 kkk 种.将这些牌依次 ...
- 2017 省赛选拨 火车入站 CSU 1757 模拟
1757: 火车入站 Submit Page Summary Time Limit: 1 Sec Memory Limit: 128 Mb Submitted: 512 ...
- 外卖的撕‘哔’大战 CSU 1559
CSU 1559 Time Limit:1000MS Memory Limit:131072 ...
- Swing开发界面时的一个bug复盘
问题:QA突然发个截图说一个Dialog上展示的东西变形了 分析:不理解,什么也没做,怎么会变形,刚刚我用的时候还正常.看看代码,的确什么也没更改:在本地测一下,也没有问题:baidu,bing,st ...
- 关于ACM,关于CSU
原文地址:http://tieba.baidu.com/p/2432943599 前言: 即将进入研二,ACM的事情也渐渐远去,记忆终将模糊,但那段奋斗永远让人热血沸腾.开个贴讲讲ACM与中南的故事, ...
- JS列表的下拉菜单组件(仿美化控件select)
JS列表的下拉菜单组件(仿美化控件select) 2014-01-23 23:51 by 龙恩0707, 1101 阅读, 6 评论, 收藏, 编辑 今天是农历23 也是小年,在这祝福大家新年快乐!今 ...
随机推荐
- VSCodeUserSetup安装教程
VSCodeUserSetup: isual Studio Code是一个轻量级但功能强大的源代码编辑器,可在桌面上运行,适用于Windows,macOS和Linux.它内置了对JavaScript, ...
- learning scala PartialFunction
Partial函数的定义 scala> val isVeryTasty: PartialFunction[String, String] = { case "Glazed Donut& ...
- 特征工程学习01-sklearn单机特征工程
特征工程学习01-sklearn单机特征工程 小书匠 kindle 0.数据的导入 from sklearn.datasets import load_iris #导入IRIS数据集 iris= ...
- Java 中的 SimpleDateFormat 【 parse 和 format 】【转换时间格式】
在 Java 里面有很多特别方便的函数(尽管术语可能不这么说)可以供我们使用,让一些本来要写好长好多的代码的事情变得仅仅几行就解决了. 在 SimpleDateFormat 中,有以下特定的规则: G ...
- CF757F Team Rocket Rises Again——最短路+支配树
CF757F Team Rocket Rises Again 全体起立,全体起立,这是我A的第一道黑题(虽然是CF的): 来一波番茄攻击: 不扯淡了,这道题也是学习支配树(之前)应该做的题: 和灾难不 ...
- CF590E Birthday
题意 给定 \(n\) 个只由 \(a,b\) 组成的字符串,保证两两不同. 要求从中选出尽可能多的字符串,使得选出的字符串中,任意一个字符串不是另一个的子串. 求最多能选多少并输出一个可行解. \( ...
- slax自启动程序
Fluxbox 本身提供了自启动程序的功能.~/.fluxbox/startup 文件是一个像启动 Fluxbox 一样自启动应用程序的脚本.# 标记是注释. 一个简单的例子: #!/bin/sh # ...
- 使用vscode快速建立vue模板
当我们希望每次新建.vue文件后,vscode能够根据配置,自动生成我们想要的内容. 打开vscode编辑器,依次选择“文件 -> 首选项 -> 用户代码片段”,此时,会弹出一个搜索框,我 ...
- macbook配置homebrew
打开homebrew官网,https://brew.sh/将安装脚本复制到命令行中,执行即可 命令正在运行,下载应用,如果在安装应用时,下载速度很慢,可以参考https://blog.csdn.net ...
- WebSocketSharp中WebSocket类
websocket-sharp.clone, Version=1.0.2.39869 WebSocket由方法调用事件改为实例化委托调用,两种构造 1.构造函数 第一种 // // 摘要: // In ...