1 条题解

  • 0
    @ 2025-8-24 21:23:50

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Kawaii_qiuw
    你看那峭壁之上生一枝红花_

    搬运于2025-08-24 21:23:49,当前版本为作者最后更新于2025-01-06 19:09:58,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    题面很好理解,不再赘述。

    解题思路

    主要分为 44 个步骤。

    Step one 储存游戏结果

    int n, a, b, p[205],q[205], x, y;
    int k[5][5] = {{0, 0, 1, 1, 0},
                 {1, 0, 0, 1, 0},
    			   {0, 1, 0, 0, 1},
    			   {0, 0, 1, 0, 1},
    			   {1, 1, 0, 0, 0}};
    

    Step two 输入

    cin >> n >> a >> b;
    for (int i = 0; i < a; i++) 
    	cin >> p[i];
    for (int i = 0; i < b; i++) 
    	cin >> q[i];
    

    Step three 加减

    for (int i = 0; i < n; i++)
    {
        x += k[p[i % a]][q[i % b]];
        y += k[q[i % b]][p[i % a]];
    }
    

    Step four 输出

    cout << x << ' ' << y;
    

    看到了吗,我们把题目拆解成四个部分,每个部分都很简单、很基础。这题本身就不是很难,但如果遇到难题,思路也是将它拆解成几个你会写的代码,所谓的“难题”也就不难了,这和做数学题一个道理。

    代码

    #include <iostream>
    using namespace std;
    int n, a, b, p[205],q[205], x, y;
    int k[5][5] = {{0, 0, 1, 1, 0},
                    {1, 0, 0, 1, 0},
    			    {0, 1, 0, 0, 1},
    			    {0, 0, 1, 0, 1},
    			    {1, 1, 0, 0, 0}};
    int main() {
    	cin >> n >> a >> b;
    	for (int i = 0; i < a; i++) 
    		cin >> p[i];
    	for (int i = 0; i < b; i++) 
    		cin >> q[i];
    	for (int i = 0; i < n; i++) {
        	x += k[p[i % a]][q[i % b]];
        	y += k[q[i % b]][p[i % a]];
    	}
    	cout << x << ' ' << y;
    	return 0;
    }
    

    完结撒花。

    • 1

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

    信息

    ID
    326
    时间
    1000ms
    内存
    125MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者