中南大学第十一届大学生程序设计竞赛-COJ1898-复盘拉火车
来源:互联网 发布:linux 退出sqlplus 编辑:程序博客网 时间:2024/05/22 17:49
1898: 复盘拉火车
Submit Page Summary Time Limit: 1 Sec Memory Limit: 128 Mb Submitted: 2 Solved: 2
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
题目大意:扑克牌游戏“拉火车”,给出初始手牌,求k轮后的情况。
解题思路:直接用链表模拟,使用STL中的list进行简化,注意对功能函数进行测试,建议分模块写。
考查内容:基本数据结构的使用
时间复杂度: O(n)
题目难度: ★★
#include<iostream>#include<vector>#include<list>using namespace std;list<string> GJ,XS,DE;void solve(string x,int op){ list<string>::iterator it,pos; bool flag=false; for(it=DE.begin();it!=DE.end();it++) { if((*it)==x) { pos=it; flag=true; } } if(flag) { for(it=pos;it!=DE.end();it++) { if(op==1) GJ.push_back(*it); else XS.push_back(*it); } if(op==1) GJ.push_back(x); else XS.push_back(x); DE.erase(pos,DE.end()); }else { DE.push_back(x); }}int main(){ ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); int T; cin>>T; int n; while(T--) { GJ.clear();XS.clear();DE.clear(); cin>>n; string tmp; list<string>::iterator it; for(int i=1;i<=n;i++) { cin>>tmp; GJ.push_back(tmp); } cin>>n; for(int i=1;i<=n;i++) { cin>>tmp; XS.push_back(tmp); } cin>>n; for(int i=1;i<=n;i++) { if(i&1) { string g=GJ.front(); GJ.pop_front(); solve(g,1); }else { string x=XS.front(); XS.pop_front(); solve(x,2); } } cout<<"Deck:"; for(it=DE.begin();it!=DE.end();it++) cout<<" "<<*it; cout<<endl; cout<<"GJ:"; for(it=GJ.begin();it!=GJ.end();it++) cout<<" "<<*it; cout<<endl; cout<<"XS:"; for(it=XS.begin();it!=XS.end();it++) cout<<" "<<*it; cout<<endl<<endl; } return 0;}
- 中南大学第十一届大学生程序设计竞赛-COJ1898-复盘拉火车
- 中南大学第十一届大学生程序设计竞赛网络预选赛总结
- 中南大学第十一届大学生程序设计竞赛-COJ1896-Symmetry
- 中南大学第十一届大学生程序设计竞赛-COJ1899-Yuelu Scenes
- 中南大学第十一届大学生程序设计竞赛-COJ1900-锋芒不露
- 中南大学第十一届大学生程序设计竞赛-COJ1903-Tricky数
- 中南大学第十一届大学生程序设计竞赛总结
- 中南大学第七届大学生程序设计竞赛
- 中南大学第十一届大学生程序设计竞赛-COJ1895-Apache is late again
- 中南大学第十一届大学生程序设计竞赛-COJ1897-The price table of the snack store
- 中南大学第十一届大学生程序设计竞赛-COJ1901-赏赐 OR 灾难
- 中南大学第十一届大学生程序设计竞赛-COJ1904-精灵的交际网
- 中南大学第十一届大学生程序设计竞赛-COJ1902-Happy Chinese Poker
- 中南大学第九届大学生程序设计竞赛网络预选赛
- 外卖的撕‘哔’大战 Contest2074 - 中南大学第九届大学生程序设计竞赛网络预选赛
- “正直角三角形” Contest2074 - 中南大学第九届大学生程序设计竞赛网络预选赛
- 第十一届浙江省大学生程序设计竞赛小结
- 湖南省第十一届大学生计算机程序设计竞赛 部分题解 待续
- STL 中的map与multimap
- python不足之处总结
- 402. Remove K Digits
- [C++][基础概念]main函数中的参数argc和argv的含义和用法
- [Swift]WKWebView用法介绍
- 中南大学第十一届大学生程序设计竞赛-COJ1898-复盘拉火车
- Hmz 的女装 详细题解
- Android数据存储和访问
- java对象克隆一个新类以及两个类对比是否相等
- python2与python3的版本差别
- LeetCode 55. Jump Game
- 数位DP(ZOJ 3777,Problem Arrangement)
- JavaEE微框架之Spring Boot
- 挑战P240 poj2175 最小费用最大流(TLE)