CodeForces 546C Soldier and Cards(佇列模擬)
阿新 • • 發佈:2019-02-08
【題目大意】兩人玩牌,每次比較第一張牌的大小,放到底部,問最後誰贏,如果一直迴圈,則輸出-1
【解題思路】設定兩個佇列,按照題目意思模擬一下即可,注意在迴圈一定次數下仍然沒有結果,則無解
程式碼:
<span style="font-family:SimSun;font-size:14px;">#include <bits/stdc++.h> using namespace std; const int N=1e6; queue <int>va,vb; int main() { int t,a,b,n,m; scanf("%d",&t); scanf("%d",&n); for(int i=0; i<n; i++) { scanf("%d",&a); va.push(a); } scanf("%d",&m); for(int i=0; i<m; i++) { scanf("%d",&b); vb.push(b); } int s=0; while(!va.empty()&&!vb.empty()) { s++; if(s>N) break; int vah=va.front(); int vbh=vb.front(); va.pop(); vb.pop(); if(vah<vbh) { vb.push(vah); vb.push(vbh); } if(vah>vbh) { va.push(vbh); va.push(vah); } } if(va.empty()||vb.empty()) { if(va.empty()) { printf("%d 2\n",s); } else printf("%d 1\n",s); } else puts("-1"); return 0; }</span>