1 solutions
-
0
使用手写双向链表即可,利用数组进行模拟,然后用
pre
和nxt
记录数组下标即可,然后模拟过程会方便很多。如果要维护的内容更为复杂,可以将
pre
和nxt
这些都封装在一个结构体当中。#include <stdio.h> #define maxn 1000010 int n, m; int op, x, y; int nxt[maxn], pre[maxn]; void init(int n) { int i = 0; for (i = 1; i <= n; ++i) nxt[i] = i + 1, pre[i] = i - 1; pre[n + 1] = n, nxt[0] = 1; } void rem(int x) { int l = pre[x], r = nxt[x]; nxt[l] = r, pre[r] = l; nxt[x] = pre[x] = 0; } void ins(int x, int y) { nxt[y] = nxt[x], pre[nxt[x]] = y; pre[y] = x, nxt[x] = y; } int main() { scanf("%d%d", &n, &m); init(n); while (m--) { scanf("%d%d", &op, &x); if (op & 1) rem(x); else scanf("%d", &y), ins(x, y); } int node = nxt[0]; while (node != n + 1) printf("%d ", node), node = nxt[node]; }
Information
- ID
- 20
- Time
- 1000ms
- Memory
- 512MiB
- Difficulty
- 1
- Tags
- # Submissions
- 82
- Accepted
- 18
- Uploaded By