首页 > 其他分享 >L2 -4 哲哲打游戏

L2 -4 哲哲打游戏

时间:2023-04-21 11:47:35浏览次数:32  
标签:游戏 哲哲 int 存档 打游戏 剧情 L2 now

题目

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

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

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

输入格式

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

接下来的 N 行,每行对应一个剧情点的发展设定。第 i 行的第一个数字是 K
i

,表示剧情点 i 通过一些操作或选择能去往下面 K
i

个剧情点;接下来有 K
i

个数字,第 k 个数字表示做第 k 个操作或选择可以去往的剧情点编号。

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

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

)不超过 10
6

输出格式

对于每个 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

代码

#include<iostream>
#include<algorithm>
#include<vector>

using namespace std;

struct node{
    int pos;
    vector<int> path;
};//这个结构是之前没考虑到的,需要学习,根据存档操作设置的结构体
const int N = 100010;
vector<int> edge[N];
vector<int>path,temppath;
//利用vector来保存路径,一个变量来保存如今到达的剧情点,结构体变量泵奥村存档操作
node Save[110];

int main(){
    int n, m ;
    cin >> n >> m;
    for(int i = 1; i <= n; i++){
        int k; cin >> k;
        int x;
        edge[i].push_back(0);
        for(int j = 1; j <= k; j++){
            cin >> x;
            edge[i].push_back(x);
        }
    }
    int now = 1;
    temppath.push_back(1);
    for(int i = 1; i<= m; i++){
        int num; cin >> num;
        if(num == 0){
            int j; cin >> j;
            temppath.push_back(edge[now][j]);
            now = edge[now][j];
        }else if(num == 1){
            int j; cin >> j;
            Save[j].pos = now;
            Save[j].path = temppath;
            printf("%d\n",now);
        }else{
            int j; cin >> j;
            now = Save[j].pos;
            temppath = Save[j].path;
        }
    }
    printf("%d\n",temppath.back());
}

标签:游戏,哲哲,int,存档,打游戏,剧情,L2,now
From: https://www.cnblogs.com/index-12/p/17339815.html

相关文章

  • L2 -3 清点代码库
    代码#include<iostream>#include<map>#include<algorithm>#include<vector>usingnamespacestd;map<vector<int>,int>mp;vector<int>temp;intmain(){intn,m;cin>>n>>m;temp.resize(m);......
  • L2 - 4 彩虹瓶
    题目彩虹瓶的制作过程(并不)是这样的:先把一大批空瓶铺放在装填场地上,然后按照一定的顺序将每种颜色的小球均匀撒到这批瓶子里。假设彩虹瓶里要按顺序装N种颜色的小球(不妨将顺序就编号为1到N)。现在工厂里有每种颜色的小球各一箱,工人需要一箱一箱地将小球从工厂里搬到装填场地......
  • 深度学习基础入门篇[六(1)]:模型调优:注意力机制[多头注意力、自注意力],正则化【L1、L2,D
    1.注意力机制在深度学习领域,模型往往需要接收和处理大量的数据,然而在特定的某个时刻,往往只有少部分的某些数据是重要的,这种情况就非常适合Attention机制发光发热。举个例子,图2展示了一个机器翻译的结果,在这个例子中,我们想将”whoareyou”翻译为”你是谁”,传统的模型处理方式是......
  • 团体天梯练习 L2-043 龙龙送外卖
    L2-043龙龙送外卖龙龙是“饱了呀”外卖软件的注册骑手,负责送帕特小区的外卖。帕特小区的构造非常特别,都是双向道路且没有构成环——你可以简单地认为小区的路构成了一棵树,根结点是外卖站,树上的结点就是要送餐的地址。每到中午12点,帕特小区就进入了点餐高峰。一开始,只有一两......
  • 团体天梯练习 L2-042 老板的作息表
    L2-042老板的作息表新浪微博上有人发了某老板的作息时间表,表示其每天\(4:30\)就起床了。但立刻有眼尖的网友问:这时间表不完整啊,早上九点到下午一点干啥了?本题就请你编写程序,检查任意一张时间表,找出其中没写出来的时间段。输入格式:输入第一行给出一个正整数\(N\),为作息表......
  • 团体天梯练习 L2-039 清点代码库
    L2-039清点代码库上图转自新浪微博:“阿里代码库有几亿行代码,但其中有很多功能重复的代码,比如单单快排就被重写了几百遍。请设计一个程序,能够将代码库中所有功能重复的代码找出。各位大佬有啥想法,我当时就懵了,然后就挂了。。。”这里我们把问题简化一下:首先假设两个功能模块......
  • 团体天梯练习 L2-038 病毒溯源
    L2-038病毒溯源病毒容易发生变异。某种病毒可以通过突变产生若干变异的毒株,而这些变异的病毒又可能被诱发突变产生第二代变异,如此继续不断变化。现给定一些病毒之间的变异关系,要求你找出其中最长的一条变异链。在此假设给出的变异都是由突变引起的,不考虑复杂的基因重组变异......
  • 团体天梯练习 L2-037 包装机
    L2-037包装机一种自动包装机的结构如图1所示。首先机器中有\(N\)条轨道,放置了一些物品。轨道下面有一个筐。当某条轨道的按钮被按下时,活塞向左推动,将轨道尽头的一件物品推落筐中。当\(0\)号按钮被按下时,机械手将抓取筐顶部的一件物品,放到流水线上。图2显示了顺序按下按......
  • L2-3 智能护理中心统计
    题目描述:智能护理中心系统将辖下的护理点分属若干个大区,例如华东区、华北区等;每个大区又分若干个省来进行管理;省又分市,等等。我们将所有这些有管理或护理功能的单位称为“管理结点”。现在已知每位老人由唯一的一个管理结点负责,每个管理结点属于唯一的上级管理结点管辖。你需要实......
  • 团体天梯练习 L2-030 冰岛人
    L2-030冰岛人2018年世界杯,冰岛队因1:1平了强大的阿根廷队而一战成名。好事者发现冰岛人的名字后面似乎都有个“松”(son),于是有网友科普如下:冰岛人沿用的是维京人古老的父系姓制,孩子的姓等于父亲的名加后缀,如果是儿子就加\(sson\),女儿则加\(sdottir\)。因为冰岛人口较少,为避......