pat-哲哲打游戏

Posted Mr.wu123

tags:

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

输入格式
输入第一行是两个正整数 N 和 M,表示总共有 N 个剧情点,哲哲有 M 个游戏操作。

接下来的 N 行,每行对应一个剧情点的发展设定。第 i 行的第一个数字是 Ki,表示剧情点 i 通过一些操作或选择能去往下面 Ki 个剧情点;接下来有 Ki 个数字,第 k 个数字表示做第 k 个操作或选择可以去往的剧情点编号,其中 k 从 1 开始计数。

最后有 M 行,每行第一个数字是 0、1 或 2,分别表示:

0 表示哲哲做出了某个操作或选择,后面紧接着一个数字 j,表示哲哲在当前剧情点做出了第 j 个选择。我们保证哲哲的选择永远是合法的。
1 表示哲哲进行了一次存档,后面紧接着是一个数字 j,表示存档放在了第 j 个档位上。
2 表示哲哲进行了一次读取存档的操作,后面紧接着是一个数字 j,表示读取了放在第 j 个位置的存档。
约定:所有操作或选择以及剧情点编号都从 1 号开始。存档的档位不超过 100 个,编号也从 1 开始。游戏默认从 1 号剧情点开始。总的选项数(即 ∑Ki)不超过 106。

输出格式
对于每个 1(即存档)操作,在一行中输出存档的剧情点编号。

最后一行输出哲哲最后到达的剧情点编号。

数据范围
1≤N,M≤105
输入样例:
10 11
3 2 3 4
1 6
3 4 7 5
1 3
1 9
2 3 5
3 1 8 5
1 9
2 8 10
0
1 1
0 3
0 1
1 2
0 2
0 2
2 2
0 3
0 1
1 1
0 2
输出样例:
1
3
9
10
样例解释
简单给出样例中经过的剧情点顺序:

1 -> 4 -> 3 -> 7 -> 8 -> 3 -> 5 -> 9 -> 10。

档位 1 开始存的是 1 号剧情点;档位 2 存的是 3 号剧情点;档位 1 后来又存了 9 号剧情点。
原题链接
这道题就是一道简单的模拟题,主要是理解题目的意思就可以做出来,哎,不知道怎么回事,比赛的时候出错了,伤心。可能那个时候时间太赶了,有些慌张,应该有些地方没有考虑仔细,所以一直输出错误,真的是太可惜了,25分就这样没了。
题目就是先进行数据的存档,然后根据输入的值为0、1、2分别进行不同的操作,最后再输出到达的剧情点即可。

#include<bits/stdc++.h>
using namespace std;
const int N=100010,M=110;

int n,m;
vector<int> g[N];
int record[M];

int main()
{
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++){
        int cnt;
        scanf("%d",&cnt);
        while(cnt--){
            int x;
            scanf("%d",&x);
            g[i].push_back(x);
        }
    }
    
    int p=1;
    while(m--){
        int a,b;
        scanf("%d%d",&a,&b);
        if(a==0){
            p=g[p][b-1];
        }
        else if(a==1){
            record[b]=p;
            printf("%d\\n",p);
        }
        else {
            p=record[b];
        }
    }
    printf("%d\\n",p);
    return 0;
}

以上是关于pat-哲哲打游戏的主要内容,如果未能解决你的问题,请参考以下文章

L2-040 哲哲打游戏 (25 分)2021天梯赛c++

[2016.6.11] NOIP模拟题

PAT 1049. 数列的片段和

PAT-乙级-1049 数列的片段和

关于哲哲跳舞这件小事儿

PAT Basic 1049