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;
}
View Code

相关文章: