题目链接
**思路:**本次就是个简单的模拟,store数组存储存档信息,但是N为1e5,无法用二维数组存储跳转信息,刚开始用map,int>存储剧情点之间的跳转信息,TLE了两个点,改用unordered_maphash存储跳转信息,WA了一个点,最后想起来可以用vector存储,AC了此题。
学到的知识点:
1.简单对比 map 和 unordered _ map 的性能。
map 内部是红黑树,在插入元素时会自动排序,而无序容器 unordered _ map 内部是散列表,通过哈希而不是排序来快速 *** 作元素,使得 效率 更高。
当你不需要排序时选择 unordered _ map 的 效率 更高。
#include
#include
#include
#include
#include
#include
#include
using namespace std;
typedef long long LL;
const int N =10010;
int n, m;
int store[100010];
vector <int> v[100010];
int main ()
{
scanf("%d%d", &n, &m);
for (int i = 1; i <= n; i ++)
{
int k; scanf ("%d", &k);
for (int j = 1; j <= k; j ++)
{
int x; cin >> x;
v[i].push_back (x);
}
}
int cur = 1;
while (m --)
{
int op, pos;
scanf("%d%d", &op, &pos);
if (op == 0)
{
cur = v[cur][pos - 1];
}
else if (op == 1)
{
store[pos] = cur;
cout << cur << "\n";
}
else
cur = store[pos];
}
cout << cur;
return 0;
}
评论列表(0条)