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-哲哲打游戏的主要内容,如果未能解决你的问题,请参考以下文章