【CodeForces - 546C】Soldier and Cards (vector或队列)
Soldier and Cards
老样子,直接上国语吧
Descriptions:
两个人打牌,从自己的手牌中抽出最上面的一张比较大小,大的一方可以拿对方的手牌以及自己打掉的手牌重新作为自己的牌,放在自己手牌的最下方,而且对方输掉的那张手牌需要放在上面,自己赢的手牌放在下面。
Input
第一行的数n代表一共有几张牌
第二行第一个数x代表第一个人有x张牌
第三行第一个数y代表第二个人有y张牌
Output
第一个数代表进行了几轮,第二个数代表谁赢
Examples
Input4
2 1 3
2 4 2
Output6 2
Input3
1 2
2 1 3
Output-1
题目链接:
https://vjudge.net/problem/CodeForces-546C
我的做法可能有点偏了,因为不知道有几个牌,就用vector存一下,然后每次拿出双方的第一张牌进行比较,再进行模拟,现在想想可以用queue来写,当时写的有点粗糙,但是思路很清晰,一遍就AC了
AC代码
#include <iostream>
#include <cstdio>
#include <fstream>
#include <deque>
#include <vector>
#include <queue>
#include <string>
#include <cstring>
#include <map>
#include <stack>
#include <set>
#include <sstream>
#define mod 1000000007
#define ll long long
#define INF 0x3f3f3f3f
using namespace std;
vector<int>a;
vector<int>b;
int n;
int f,flag=;
int x,y;
int sum=;
int main()
{
cin >> n;
cin >> x;
for(int i=; i<x; i++)
{
int num;
cin>>num;
a.push_back(num);
}
cin>>y;
for(int i=; i<y; i++)
{
int num;
cin>> num;
b.push_back(num);
}
while(!a.empty()&&!b.empty())//两人的卡牌都不为空
{
sum++;
int num1=a.front();//都取出第一张卡牌进行比较
int num2=b.front();
if(num1>num2)//1号大于2号就把2号和自己的卡牌一次放在队尾
{
a.push_back(num2);
a.push_back(num1);
vector<int>::iterator t1=a.begin();
vector<int>::iterator t2=b.begin();
a.erase(t1);
b.erase(t2);
}
if(num2>num1)//2号大于1号就把1号和自己的卡牌一次放在队尾
{
b.push_back(num1);
b.push_back(num2);
vector<int>::iterator t1=a.begin();
vector<int>::iterator t2=b.begin();
a.erase(t1);
b.erase(t2);
}
if(!b.empty())//谁的卡牌为空谁就输了
f=;
if(!a.empty())
f=;
if(sum>=n*n*n*n*n*n)//判断一下,要是循环这么多次还没分出胜负,应该就是死循环了
{
flag=;
cout<<"-1"<<endl;
break;
}
}
if(flag)
cout<<sum<<" "<<f<<endl;
return ;
}
【CodeForces - 546C】Soldier and Cards (vector或队列)的更多相关文章
- cf 546C Soldier and Cards
题目链接:C. Soldier and Cards Two bored soldiers are playing card war. Their card deck consists of exact ...
- 546C. Soldier and Cards
题目链接 题意 两个人玩扑克,共n张牌,第一个人k1张,第二个人k2张 给定输入的牌的顺序就是出牌的顺序 每次分别比较两个人牌的第一张,牌上面数字大的赢,把这两张牌给赢的人,并且大的牌放在这个人的牌最 ...
- CodeForces 546C(队列)
CodeForces 546C Soldier and Cards Time Limit:2000MS Memory Limit:262144KB 64bit IO Format:%I ...
- 【codeforces 546C】Soldier and Cards
time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...
- Codeforces Round #304 (Div. 2) C. Soldier and Cards —— 模拟题,队列
题目链接:http://codeforces.com/problemset/problem/546/C 题解: 用两个队列模拟过程就可以了. 特殊的地方是:1.如果等大,那么两张牌都丢弃 : 2.如果 ...
- Codeforces Round #304 (Div. 2) C. Soldier and Cards 水题
C. Soldier and Cards Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/546 ...
- 队列 Soldier and Cards
Soldier and Cards 题目: Description Two bored soldiers are playing card war. Their card deck consists ...
- queue+模拟 Codeforces Round #304 (Div. 2) C. Soldier and Cards
题目传送门 /* 题意:两堆牌,每次拿出上面的牌做比较,大的一方收走两张牌,直到一方没有牌 queue容器:模拟上述过程,当次数达到最大值时判断为-1 */ #include <cstdio&g ...
- CF Soldier and Cards (模拟)
Soldier and Cards time limit per test 2 seconds memory limit per test 256 megabytes input standard i ...
随机推荐
- ios NSAttributedString 具体解释
ios NSAttributedString 具体解释 NSAttributedString能够让我们使一个字符串显示的多样化,可是眼下到iOS 5为止,好像对它支持的不是非常好,由于显示起来不太方便 ...
- 【hdu】Mayor's posters(线段树区间问题)
须要离散化处理,线段树的区间改动问题. 须要注意的就是离散化的时候,由于给的数字是一段单位长度,所以须要特殊处理(由于线段的覆盖和点的覆盖是不一样的) 比方:(1,10)(1,4) (6,10) 离散 ...
- Hibernate_14_数据连接池的使用
在主配置文件Hibernate.cfg.xml中设置: <!-- 设置默认的事务隔离级别: 隔离级别 相应的整数表示 READ UNCOMMITED 1 READ COMMITED 2 REPE ...
- Windows 8实用窍门系列:20.Windows 8中的GridView使用(二)和DataTemplateSelector
在本文中所讲述内容的实例仍然沿用于上篇文章,有什么疑惑可以参考上篇文章. 一 GroupStyle 在GridView控件中我们可以对数据进行分组显示,通过对GridView的GroupStyle进行 ...
- HDOJ1006
#include <cstdio>#include <algorithm>using namespace std;const double UB=43200;const dou ...
- asp对中文编码及解码,Decode和Encode中文网址处理
<%'-------------------------------------------------------------------------- '================== ...
- CSS3 的10种Loading
昨晚用CSS3实现了几种常见的Loading效果,虽然很简单,但还是分享一下,顺便也当是做做笔记…… 第1种效果: 代码如下: <div class="loading"> ...
- 正则工具类以及FinalClass
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/jadyer/article/details/27811103 完整版见https://jadyer. ...
- swing_tableModel 创建表格
import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.Panel; import java.util.Ar ...
- table 中的thead tbody
通过thead 下的tr 设置样式以及 tbody 下的 tr 设置样式 避免冲突 <table> <thead> <tr> <td> </td& ...