This commit is contained in:
2023-12-23 22:23:48 +08:00
commit 43ced8bd2a
58 changed files with 5702 additions and 0 deletions

41
ACMOJ-1728.hpp Normal file
View File

@ -0,0 +1,41 @@
#include <algorithm>
#include <cstring>
void Init(int **&p, int n) { // 初始化n为vector的个数,传入的p指向nullptr
// todo
p = new int *[n + 1];
p[0] = new int[n + 1];
p[0][0] = n;
for (int i = 1; i <= n; i++) p[0][i] = 1;
for (int i = 1; i <= n; i++) {
p[i] = new int[2];
p[i][0] = 0;
}
}
void Add_element(int **&p, int x,
int y) { // 在第x(1base)个vector后面添加一个元素y
// todo
if (p[x][0] + 1 <= p[0][x]) {
p[x][0]++;
p[x][p[x][0]] = y;
} else {
int *new_p = new int[p[0][x] * 2 + 1];
memcpy(new_p, p[x], sizeof(int) * (p[x][0] + 1));
p[0][x] *= 2;
delete[] p[x];
p[x] = new_p;
p[x][0]++;
p[x][p[x][0]] = y;
}
}
int Get_element(int **&p, int x,
int k) { // 获取第x(1base)个vector中第k个(1-base)元素的值
// todo
return p[x][k];
}
void Clear(int **&p, int n) { // 回收空间
// todo
for (int i = 1; i <= p[0][0]; i++) delete[] p[i];
delete[] p[0];
delete[] p;
}