• [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;
    }
  • 相关阅读:
    windows cmd command line 命令
    windows cmd color setup
    二进制中1的个数
    斐波拉契数列
    旋转数组的最小数字
    用两个栈实现队列
    重建二叉树
    Bootstrap学习笔记(三) 网格系统
    Bootstrap学习笔记(二) 表单
    Bootstrap学习笔记(一) 排版
  • 原文地址:https://www.cnblogs.com/zcr-blog/p/11760815.html
Copyright © 2020-2023  润新知