题目链接:点击查看

题目大意:两个人在玩游戏,初始时两个人分别有一定数量的牌,牌面的大小一定是互不相同的,游戏规则如下:

每次两个人同时从自己牌堆的最顶端取出一张牌,我们可以记做a和b,比较一下其大小,牌面更大的一方获胜,胜者可以先将对面的牌a放到自己牌堆的下面,然后再将自己b放到牌a下面,如此往复,牌堆先为空的人即输掉了游戏

还有一种情况就是两个人在游戏过程中会出现循环的情况,此时游戏视为平局,输出-1

题目分析:简单模拟,只是单纯的觉得题面挺有意思的,就是英文题面不太友好。。今晚是小师弟给我讲的题意我才实现了的,开两个队列分别模拟两个人的牌,然后一直循环进行游戏即可,因为会有循环的情况出现,这里给出两种方法都可以实现:

  1. 维护一个map<pair<queue<int>,queue<int>>,bool>vis的map进行判重
  2. 当游戏的步数大于一个比较大的值时,直接跳出循环即可

我是为了追求完美起见,用了vis进行判重,并且配合了一个mp函数简化了调用make_pair()时的代码量,也算是比较好看的了。。

我看有些老哥是判断游戏步数大于1000时直接跳出循环,这样做可以大大减少空间和时间(map的logn的时间开销),就是有时候可能会先WA上几发(随缘过题法)

废话不多说了,直接上代码吧:

#include<iostream>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<climits>
#include<cmath>
#include<cctype>
#include<stack>
#include<queue>
#include<list>
#include<vector>
#include<set>
#include<map>
#include<sstream>
#include<unordered_map>
using namespace std;typedef long long LL;const int inf=0x3f3f3f3f;const int N=25;map<pair<queue<int>,queue<int> >,bool>vis;queue<int>q1,q2;pair<queue<int>,queue<int>> mp(queue<int>a,queue<int>b)
{return make_pair(a,b);
} int main()
{int n;scanf("%d",&n);int cnt;scanf("%d",&cnt);while(cnt--){int num;scanf("%d",&num);q1.push(num);}scanf("%d",&cnt);while(cnt--){int num;scanf("%d",&num);q2.push(num);}bool flag=false;int ans=0;vis[mp(q1,q2)]=true;while(!q1.empty()&&!q2.empty()){ans++;int a=q1.front();int b=q2.front();q1.pop();q2.pop();if(a>b){q1.push(b);q1.push(a);}else{q2.push(a);q2.push(b);}if(vis[mp(q1,q2)])break;vis[mp(q1,q2)]=true;}if(q1.size()&&q2.size())printf("-1\n");else if(!q1.empty())printf("%d %d\n",ans,1);elseprintf("%d %d\n",ans,2);return 0;
}

CodeForces - 546C Soldier and Cards(模拟)相关推荐

  1. 【CodeForces - 546C 】Soldier and Cards (模拟)

    题干: Two bored soldiers are playing card war. Their card deck consists of exactly n cards, numbered f ...

  2. CodeForces 1463 C. Busy Robot 模拟

    CodeForces 1463 C. Busy Robot 模拟 题目大意: 有一个一维坐标轴,在最初时刻有个机器人位于坐标 0 0 0 位置,有 n n n 个命令,对于每一个命令在 t i t_i ...

  3. CF546C. Soldier and Cards(队列+模拟)

    题目链接:https://acm.njupt.edu.cn/problem/CF546C/editor 解题思路:唯一难点就是如何判断能不能分出胜负,这里因为总卡片不大于10,所以直接判断在队列进行次 ...

  4. BZOJ 3836 Codeforces 280D k-Maximum Subsequence Sum (模拟费用流、线段树)

    题目链接 (BZOJ) https://www.lydsy.com/JudgeOnline/problem.php?id=3836 (Codeforces) http://codeforces.com ...

  5. 【CodeForces Round #550】A-F | 模拟 | 贪心 | 高精 | BFS | 二分图 | E

    今年怎么没有愚人节比赛了   CF你看看人家洛谷   唉鸭原来那边还没到愚人节呢- 愚人节比赛还是有的,在今晚 qwq [CodeForces 1144   A-F] Tags:模拟 贪心 BFS 高 ...

  6. CodeForces - 1328F Make k Equal(模拟)

    题目链接:点击查看 题目大意:给出一个数列 a ,现在有两种操作: 找到一个最小值,使其值加一 找到一个最大值,使其值减一 注意这里找到一个最值进行的操作,是针对最值不唯一的情况,题目问至少需要进行多 ...

  7. CodeForces - 1321C Remove Adjacent(贪心+模拟)

    题目链接:点击查看 题目大意:给出一个长度不超过100且只包含小写字母的字符串,现在规定,如果某个位置 i 的相邻位置存在着当前位置所代表字母的前一个字母,即 i - 1 和 i + 1 中存在着 a ...

  8. CodeForces - 1208E Let Them Slide(模拟+multiset)

    题目链接:点击查看 题目大意:给出n个数列,每行放一个,现在指定一个宽度w,满足w不小于n个数列中最长的那个数列的长度,现在可以将n个数列都放入到一个n*w的矩形之中,每个数列可以在各自的行内左右移动 ...

  9. CodeForces - 224C. Bracket Sequence (栈模拟)简单做法

    A bracket sequence is a string, containing only characters "(", ")", "[&quo ...

最新文章

  1. 两个硬盘和文件相关的小技巧 (C#)
  2. [linux]解决vsftpd 读取目录列表失败的问题
  3. 各种排序总结(一)直接插入排序
  4. 创建android工程时Install Dependencies(安装依赖)提示
  5. java二叉树深度优先遍历会考不递归的吗_树的广度优先遍历和深度优先遍历(递归非递归、Java实现)...
  6. usb接口供电不足_主板接口不认识?一分钟带你了解电脑主板接口
  7. vue.js慢速入门(1)
  8. mongodb 导出一条数据_将 MongoDB 导出成 csv
  9. jQuery创建Dom元素
  10. Java暑期实训——简易计算器
  11. linux 操作mysql 命令_linux下mysql操作命令大全
  12. Oracle 12c 数据库基础教程
  13. 微信小程序下拉刷新在真机上不回缩问题的解决方法
  14. android应用流程图,Android APP 启动流程简析
  15. 问题及解决方法记录:A component required a bean of type ‘org.springframework.web.client.RestTemplate‘ that cou
  16. ctextart类的文档仅仅首页修改页眉
  17. 【芯片使用】PCF8591
  18. Collectors
  19. c# 向Excel文件写入数据(Workbook 和Worksheet )
  20. 二级计算机公共基础知识

热门文章

  1. SpringSecurity OAuth2在项目中使用完成的功能说明
  2. 记一次CentOS Install Docker 报错
  3. SpringBoot_数据访问-整合MyBatis(一)-基础环境搭建
  4. win7电脑总是提示重新启动计算机以完成重要更新的安装是怎么回事,Win7开机时弹出Windows Update提示,怎样解决?(图文)...
  5. java cmd找不到文件_cmd中输入java找不到文件解决方法
  6. HID接口设备-硬件要求
  7. 洛谷 P1983 车站分级
  8. 熬过了互联网“寒冬”,接下来的金三银四你该怎么面试进BAT?
  9. CentOS7通过yum安装MySQL5.7
  10. 【深度学习】数据降维方法总结