[noip2014]生活大爆炸版石头剪刀布

Posted zcr-blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[noip2014]生活大爆炸版石头剪刀布相关的知识,希望对你有一定的参考价值。

传送门

题意就不说了,算法也就是个大暴力,把每种情况输赢都预处理出来(打表就好了),注意一些细节就可以了。

技术图片

上代码:

#include <iostream>
using namespace std;
int n, na, nb;
int a[210], b[210];
int aa, ab;
/*
1:平 
2:赢
3:输 
*/
int cmp(int x, int y) {
    switch (x) {
        case 0:
            switch(y) {
                case 0:
                    return 1;
                case 1:
                    return 3;
                case 2:
                    return 2;
                case 3:
                    return 2;
                case 4:
                    return 3;
            }
        case 1:
            switch(y) {
                case 0:
                    return 2;
                case 1:
                    return 1;
                case 2:
                    return 3;
                case 3:
                    return 2;
                case 4:
                    return 3;
            }
        case 2:
            switch(y) {
                case 0:
                    return 3;
                case 1:
                    return 2;
                case 2:
                    return 1;
                case 3:
                    return 3;
                case 4:
                    return 2;
            }
        case 3:
            switch(y) {
                case 0:
                    return 3;
                case 1:
                    return 3;
                case 2:
                    return 2;
                case 3:
                    return 1;
                case 4:
                    return 2;
            }
        case 4:
            switch(y) {
                case 0:
                    return 2;
                case 1:
                    return 2;
                case 2:
                    return 3;
                case 3:
                    return 3;
                case 4:
                    return 1;
            }
    }
    return 0;
}
int main() {
    cin >> n >> na >> nb;
    for (int i = 1; i <= na; i++) cin >> a[i];
    for (int i = 1; i <= nb; i++) cin >> b[i];
    a[0] = a[na];
    b[0] = b[nb];
    for (int i = 1; i <= n; i++) {
        if (cmp(a[i % na], b[i % nb]) == 1) {
        } else if (cmp(a[i % na], b[i % nb]) == 2) {
            aa++;
        } else {
            ab++;
        }
    }
    cout << aa << " " << ab;
}

 

以上是关于[noip2014]生活大爆炸版石头剪刀布的主要内容,如果未能解决你的问题,请参考以下文章

NOIp 2014 #1 生活大爆炸版石头剪刀布 Label:模拟

洛谷P1328==codevs3716 生活大爆炸版石头剪刀布[NOIP 2014 day1 T1]

Noip2014 提高组 生活大爆炸版石头剪刀布 Day1 T1

[noip2014]生活大爆炸版石头剪刀布

2014年 生活大爆炸版石头剪刀布

P1328 [NOIP2014 提高组] 生活大爆炸版石头剪刀布