题解 CF546C Soldier and Cards
Posted edenhazardhty
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了题解 CF546C Soldier and Cards相关的知识,希望对你有一定的参考价值。
思路
是一道水题,可以用队列+模拟来写,注意不要拿完队列中的元素!
代码
1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 using namespace std; 5 const int maxn=1000000+5; 6 int main() 7 8 int n; 9 cin>>n; 10 queue<int>a;//队列 11 queue<int>b; 12 int x,y; 13 cin>>x; 14 for(int i=0;i<x;i++) 15 16 int x; 17 cin>>x; 18 a.push(x); 19 20 cin>>y; 21 for(int i=0;i<y;i++) 22 23 int y; 24 cin>>y; 25 b.push(y); 26 27 int sum=0;//记录步数 28 bool flag=0;//判断输赢以及游戏是否结束 29 while(sum<=maxn) 30 31 int u=a.front();a.pop(); 32 int v=b.front();b.pop(); 33 sum++; 34 if(u>v) 35 36 a.push(v);//U比V大时 37 a.push(u); 38 39 else 40 41 b.push(u);//U比V小时 42 b.push(v); 43 44 if(a.size()==0&&b.size()==0)//游戏结束 45 break; 46 if(a.size()==0) 47 48 printf("%d %d\n",sum,2); 49 flag=1; 50 51 if(b.size()==0) 52 53 printf("%d %d\n",sum,1); 54 flag=1; 55 56 if(flag==1)break; 57 58 if(flag==0)printf("-1\n"); 59 return 0; 60
是不是很简单呢?
以上是关于题解 CF546C Soldier and Cards的主要内容,如果未能解决你的问题,请参考以下文章
CodeForces546B Soldier and Badges 解题报告