NOIP2014 生活大爆炸版石头剪刀布 解题报告(水题)

来源:互联网 发布:解决mac磁盘空间不足 编辑:程序博客网 时间:2024/05/21 23:41

在线评测:

http://codevs.cn/problem/3716/

整体思路:

就打一个判断输赢的数组,然后搞个队列模拟就行了,,,

失误之处:

开始貌似没有注意c++手动打数组表的一些奇怪特性,

1
int jg[5][5] = {{1,3,2,2,3},{2,1,3,2,3},{3,2,1,3,2},{3,3,2,1,2},{2,2,3,3,1}};
这是正确的姿势,

体会心得:

貌似没啥,不要犯一些语言基础的问题,

AC代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <queue>
using namespace std;
queue <int> dl1,dl2;
int n,na,nb,a1,a2,tp;
int jg[5][5] = {{1,3,2,2,3},{2,1,3,2,3},{3,2,1,3,2},{3,3,2,1,2},{2,2,3,3,1}};
int main()
{
    scanf("%d%d%d",&n,&na,&nb);
    for (int i = 1;i <= na;i++)
    {
        scanf("%d",&tp);
        dl1.push(tp);
    }
    for (int i = 1;i <= nb;i++)
    {
        scanf("%d",&tp);
        dl2.push(tp);
    }
    for (int i = 1;i <= n;i++)
    {
        na = dl1.front();
        dl1.pop();
        dl1.push(na);
        nb = dl2.front();
        dl2.pop();
        dl2.push(nb);
        int ans = jg[na][nb];
        if (ans == 2)
            a1++;else
            if (ans == 3)
                a2++;
    }
    printf("%d %d\n",a1,a2);
    return 0;
}

0 0
原创粉丝点击