codeforces 546C (队列)
2016-10-21 11:53
197 查看
题目链接:点击这里
题意:给出两堆数,每次两人都取堆顶的数字比大小,大的人得到这两个数,并把对方的数先放到自己的堆底,再把自己的数放到自己的堆底。最后没有数字的人输,求出结束的步数以及赢家。因为数字最多只有10个,所以大概不同的状态有400W次。直接用队列模拟400W次看有没有结束即可。
#include <bits/stdc++.h> using namespace std; #define maxn 4000005 deque <int> g1, g2; int n, x, y; int main () { scanf ("%d", &n); while (!g1.empty ()) g1.pop_back (); while (!g2.empty ()) g2.pop_back (); scanf ("%d", &x); for (int i = 1; i <= x; i++) { int tmp; scanf ("%d", &tmp); g1.push_back (tmp); } scanf ("%d", &y); for (int i = 1; i <= y; i++) { int tmp; scanf ("%d", &tmp); g2.push_back (tmp); } int cnt = 0; while (!g1.empty () && !g2.empty ()) { int u = g1.front (), v = g2.front (); g1.pop_front (); g2.pop_front (); if (u > v) { g1.push_back (v); g1.push_back (u); } else { g2.push_back (u); g2.push_back (v); } cnt++; if (cnt == maxn) { cout << -1 << endl; return 0; } } cout << cnt << " "; if (g1.empty ()) { cout << 2 << endl; } else cout << 1 << endl; return 0; }
相关文章推荐
- CodeForces 546C Soldier and Cards (队列)
- CodeForces 546C(队列)
- CodeForces 546C(队列)
- CodeForces 137C【贪心+优先队列】
- codeforces 602B (队列)
- Codeforces 913D - Too Easy Problems 【优先队列】
- CodeForces-546C-Soldier and Cards
- CodeForces - 867E Buy Low Sell High 贪心 + 优先队列
- 【codeforces 681C】【优先队列+模拟】 Heap Operations
- codeforces 372C Watching Fireworks is Fun 单调队列优化dp
- DP训练 codeforces 372C Watching Fireworks is Fun [单调队列优化dp]
- codeforces 253D 单调队列 好题
- codeforces 940E(单调队列+dp)
- Codeforces 845 C Two TVs(贪心之优先队列维护)
- [置顶] CodeForces 455D Serega and Fun (分块+双端队列)
- CodeForces 660C Hard Process (队列)
- Codeforces 553D Nudist Beach 优先队列 贪心
- 【CodeForces - 864】 A B C【模拟】 D【贪心+优先队列】
- 【映射 && 优先队列】CodeForces - 140C New Year Snowmen
- #Codeforces 381 [div2] D. Alyona and a tree 【树链剖分 + 优先队列】