当前位置: 首页 > article >正文

L2-040 哲哲打游戏 简单模拟

哲哲是一位硬核游戏玩家。最近一款名叫《达诺达诺》的新游戏刚刚上市,哲哲自然要快速攻略游戏,守护硬核游戏玩家的一切!

为简化模型,我们不妨假设游戏有 N 个剧情点,通过游戏里不同的操作或选择可以从某个剧情点去往另外一个剧情点。此外,游戏还设置了一些存档,在某个剧情点可以将玩家的游戏进度保存在一个档位上,读取存档后可以回到剧情点,重新进行操作或者选择,到达不同的剧情点。

为了追踪硬核游戏玩家哲哲的攻略进度,你打算写一个程序来完成这个工作。假设你已经知道了游戏的全部剧情点和流程,以及哲哲的游戏操作,请你输出哲哲的游戏进度。

输入格式:

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

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

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

  • 0 表示哲哲做出了某个操作或选择,后面紧接着一个数字 j,表示哲哲在当前剧情点做出了第 j 个选择。我们保证哲哲的选择永远是合法的。
  • 1 表示哲哲进行了一次存档,后面紧接着是一个数字 j,表示存档放在了第 j 个档位上。
  • 2 表示哲哲进行了一次读取存档的操作,后面紧接着是一个数字 j,表示读取了放在第 j 个位置的存档。

约定:所有操作或选择以及剧情点编号都从 1 号开始。存档的档位不超过 100 个,编号也从 1 开始。游戏默认从 1 号剧情点开始。总的选项数(即 ∑Ki​)不超过 106。

输出格式:

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

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

输入样例:

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 号剧情点。

简单题:直接模拟

#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
const int N = 1e5+10  ;
int n , m ;
int now = 1 , archive[N] ;  //now 为当前关卡 archive为存档
vector <int> sty[N] ; //剧情跳转

int main()
{
    scanf("%d%d", &n , &m);

    for( int i = 1 ; i <= n ; i++ )
    {
        int k;
        scanf("%d", &k);
        sty[i].push_back(-1);//编号从1开始 先随便塞个东西当0
        while ( k -- ){
            int x ;
            scanf("%d", &x);
            sty[i].push_back(x) ;
        }
    }
    
    while ( m --){
        int a , b ;
        scanf("%d%d", &a , &b);
        if( !a )
            now = sty[now][b] ;
        else if( a == 2)
            now = archive[b] ;
         else{
            archive[b] = now ;
            printf("%d\n", now);
         }
    }
    printf("%d", now );
    return 0;
}

http://www.kler.cn/news/7362.html

相关文章:

  • 免费CRM如何进行选择?
  • 用GPT-4写代码不用翻墙了?Cursor告诉你:可以~~
  • 【视频分割】【深度学习】MiVOS官方Pytorch代码-S2M模块DeepLavV3Plus网络解析
  • 【Vue框架】Vue绑定样式及案例之行内样式——对象绑定样式与数组控制样式(附带源码案例)
  • 前端基础-ES6
  • 网络安全行业现在好混吗,工资水平怎么样?
  • Junit 5 单元测试框架
  • Matlab 一种计算植物面积密度的新方法(论文复现:凸包法)
  • 【C++】用一棵红黑树同时封装出map和set
  • 2022年业绩逆势增长,“要强”蒙牛再创蒙牛
  • Flutter 本地SQLite数据库版本升级处理
  • 数据分析之Pandas(2)
  • 【Go基础】一篇文章带你了解 — map
  • Lock wait timeout exceeded; try restarting transaction
  • 现代前端开发者的自我迷失,你还会前端基础知识吗?
  • 面向对象编程(基础)10:类的成员之三:构造器(Constructor)
  • Android Binder小结
  • 【蓝桥杯算法模板题--蓝桥题库Java】
  • 技术宅小伙:ChatGPT的编程能力到底有多厉害?
  • React 面向组件编程(下)