2015-06-27 17:02:20
【传送门】
总结:去上海前的一场比赛,当时没有打,今天来补交作业....
题目难度不大,赛中AK。
A、B水,C题没有说明正负... 被坑了2发,后来打了暴力过掉,D、E思路都不难,但是需要 coding 时间。
A题:模拟
B题:排序
C题:模拟
题意 & 思路:大意是两人玩纸牌游戏,问谁赢,或产生无限循环,直接模拟百万次即可。
#include <cstdio> #include <ctime> #include <cstring> #include <cstdlib> #include <cmath> #include <vector> #include <map> #include <set> #include <stack> #include <queue> #include <string> #include <iostream> #include <algorithm> using namespace std; #define getmid(l,r) ((l) + ((r) - (l)) / 2) #define MP(a,b) make_pair(a,b) #define PB(a) push_back(a) typedef long long ll; typedef pair<int,int> pii; const double eps = 1e-8; const int INF = (1 << 30) - 1; int n,k1,k2; queue<int> q1,q2; int main(){ scanf("%d",&n); scanf("%d",&k1); int a; for(int i = 1; i <= k1; ++i){ scanf("%d",&a); q1.push(a); } scanf("%d",&k2); for(int i = 1; i <= k2; ++i){ scanf("%d",&a); q2.push(a); } int o = 3000000; while(--o){ if(q1.empty() || q2.empty()) break; int v1 = q1.front(); q1.pop(); int v2 = q2.front(); q2.pop(); if(v1 > v2){ q1.push(v2); q1.push(v1); } else{ q2.push(v1); q2.push(v2); } } if(o == 0){ printf("-1\n"); return 0; } printf("%d ",3000000 - o - 1); if(q1.empty()) printf("2\n"); else printf("1\n"); return 0; }