AcWing 1695. 果壳游戏

Posted 满天星!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了AcWing 1695. 果壳游戏相关的知识,希望对你有一定的参考价值。

AcWing 1695. 果壳游戏

题目链接

题目描述:
为了消磨时光,奶牛 Bessie 和她的朋友 Elsie 喜欢玩一种她们在农业展览会上看到的游戏。
游戏准备阶段,Bessie 在桌子上放置三个倒置的坚果壳,1号坚果壳放在位置1,2号坚果壳放在位置2,3号坚果壳放在位置3。并在其中一个坚果壳下面藏了一块小的鹅卵石(至少她希望这是一块鹅卵石——她在一块牧场的地上找到的)。
随后 Bessie 会两两调换坚果壳,鹅卵石会随着坚果壳一起移动,同时 Elsie 试着去猜鹅卵石的位置。
奶牛们在农业展览会上看到的这个游戏的标准形式是玩家可以看到鹅卵石初始的位置,然后要求玩家猜所有交换完成之后鹅卵石最终的位置。
然而,现在奶牛们想要去进行这样一种玩法,Elsie 不知道鹅卵石的初始位置,同时她可以在每一次交换之后猜一下鹅卵石的位置。
Bessie 知道正确答案,在游戏结束后会给 Elsie 一个分数,等于她猜对的次数。
给定所有的交换和 Elsie 的猜测,但是不给出鹅卵石的初始位置,请求出 Elsie 最高可能获得的分数。

输入格式
输入的第一行包含一个整数 N,为交换的次数。
以下 N 行每行描述了游戏的一个回合,包含三个整数 a、b 和 g,表示 Bessie 交换了位置 a 和 b 的坚果壳,然后 Elsie 猜的是位置 g。
所有这三个数均为 1、2、3 之一,并且 a≠b。

输出格式
输出 Elsie 可以得到的最高分数。

数据范围
1≤N≤100
输入样例:

3
1 2 1
3 2 1
1 3 1

输出样例:

2

样例解释
在这个例子中,Elsie 最多可以获得 2 分。
如果鹅卵石开始时位于坚果壳 1 下面,那么她猜中了一次(最后一次)。
如果鹅卵石开始时位于坚果壳 2 下面,那么她猜中了两次(开始两次)。
如果鹅卵石开始时位于坚果壳 3 下面,那么她没有猜对任何一次。

思路:
玩游戏之前,1号位置放坚果壳1,2号位置放坚果壳2,3号位置放坚果壳3
石头放在某个位置上不动
游戏开始后,将两个坚果壳交换位置,然后猜石头在某个坚果壳下面,石头的位置是不动的。
如果某次交换后,猜石头在编号为 x 的坚果壳下面,只有石子位置在编号坚果为 x 的壳所在位置上的时候,才得分。
如果用 f[i] 保存编号为 i 的坚果壳的位置。猜编号为 x 的坚果壳,只有石子位置在 f[x] 的时候才得分。

AC代码

#include<bits/stdc++.h>
using namespace std;
int f[110],sum[110];
int main()

    int n;
    cin>>n;
    for(int i=1;i<=n;i++) f[i]=i;
    for(int i=1;i<=n;i++)
    
        int a,b,g;
        cin>>a>>b>>g;
        swap(f[a],f[b]); 
    //交换坚果壳 a b后,a坚果壳放在了原来b坚果壳的位置,b坚果壳放在了原来 a 坚果壳的位置
        sum[f[g]]++;
        //猜在c坚果壳中,c 坚果壳的位置为 f[c], 所以只有石子位置为 f[c] 的情况下,猜 c 坚果壳才得分
    
    
    cout<<max(sum[1],sum[2],sum[3])<<endl;
    return 0;

如果觉得写的还不错,点个赞吧 ^ v ^

以上是关于AcWing 1695. 果壳游戏的主要内容,如果未能解决你的问题,请参考以下文章

AcWing 667. 游戏时间

博弈论Nim游戏:台阶集合拆分(AcWing)

洛谷 P1413 坚果保龄球

Acwing 1084. 数字游戏 II

春季每日一题打卡day2 —— AcWing 435. 传球游戏

AcWing 国王游戏