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

2025年9月模拟赛整合

2025年9月模拟赛整合

2025CSP-S模拟赛46

T1 T2 T3 T4
90 WA 24 WA 20 TLE 40 RE

总分:174;排名:16/25。

T1 数组开小了,签到题。T2 应当是 28 分,最后的代码忘交了,T3 T4 就是朴素的暴力。

T1 雷暴(storm)

签到题。

#include <bits/stdc++.h>
#define il inlineusing namespace std;const int bufsz = 1 << 20;
char ibuf[bufsz], *p1 = ibuf, *p2 = ibuf;
#define getchar() (p1 == p2 && (p2 = (p1 = ibuf) + fread(ibuf, 1, bufsz, stdin), p1 == p2) ? EOF : *p1++)
il int read() {int x = 0; char ch = getchar(); bool t = 0;while (ch < '0' || ch > '9') {t ^= ch == '-'; ch = getchar();}while (ch >= '0' && ch <= '9') {x = (x << 1) + (x << 3) + (ch ^ 48); ch = getchar();}return t ? -x : x;
}
bool Beg;
const int INF = 0x3f3f3f3f;
const int N = 1e3 + 10, M = 1e5 + 10;
int n, m, kk;
int li[M], ri[M], lj[M], rj[M];
bool End;
il void Used() {cerr << "Use " << (&Beg - &End) / 1024.0 / 1024.0 << "MB " << (double)clock() * 1000.0 / CLOCKS_PER_SEC << "ms\n";}
int main() {n = read(), m = read(), kk = read();for (int i = 1; i <= kk; i++) li[i] = lj[i] = INF;for (int i = 1; i <= n; i++) {for (int j = 1; j <= m; j++) {int c = read();li[c] = min(li[c], i);ri[c] = max(ri[c], i);lj[c] = min(lj[c], j);rj[c] = max(rj[c], j);}}for (int i = 1; i <= kk; i++) {int len = max(ri[i] - li[i] + 1, rj[i] - lj[i] + 1);len = max(len, 0);printf("%d\n", len * len);}Used();return 0;
}

T2 神力(god)

这个题妙啊。

考试时想了很久 dp,正推逆推都想过了,但是就会有很多东西难以处理,一个是不管是从 \(1\) 个点到 \(2n\) 个点还是从 \(2n\) 个点到 \(1\) 个点都很难推,另一个就是重复经过一个点的处理很繁琐。然后赛时思考 2h 无果。

正解就是相对运动。考虑逆推。设 \(f_{i,j}\) 表示考虑到第 \(i\) 步,和出发点的距离是 \(j\) 的概率。这样就避开了上面所说的问题,现在就是由 \(1\) 个点推到 \(1\) 个点,而且逆推不用考虑重复经过一个点。妙啊。

#include <bits/stdc++.h>
#define il inline
#define int long long using namespace std;const int bufsz = 1 << 20;
char ibuf[bufsz], *p1 = ibuf, *p2 = ibuf;
#define getchar() (p1 == p2 && (p2 = (p1 = ibuf) + fread(ibuf, 1, bufsz, stdin), p1 == p2) ? EOF : *p1++)
il int read() {int x = 0; char ch = getchar(); bool t = 0;while (ch < '0' || ch > '9') {t ^= ch == '-'; ch = getchar();}while (ch >= '0' && ch <= '9') {x = (x << 1) + (x << 3) + (ch ^ 48); ch = getchar();}return t ? -x : x;
}
bool Beg;
const int MOD = 1e9 + 7;
const int N = 5e3 + 10;
int n, a[N], P;
il int fpow(int a, int x) {a %= MOD;int ans = 1;while (x) {if (x & 1) ans = ans * a % MOD;a = a * a % MOD;x >>= 1;}return ans;
}
int f[N][N << 1]; 
bool End;
il void Used() {cerr << "\nUse " << (&Beg - &End) / 1024.0 / 1024.0 << "MB " << (double)clock() * 1000.0 / CLOCKS_PER_SEC << "ms\n";}
signed main() {n = read(), P = read();for (int i = 1; i <= n; i++) a[i] = read();P = P * fpow(100, MOD - 2) % MOD;for (int i = n; i >= 1; i--) {f[i][0 + N] = 1;for (int j = -n; j <= n; j++) {f[i - 1][j + a[i] + N] = (f[i - 1][j + a[i] + N] + f[i][j + N] * (1 - P) % MOD) % MOD;f[i - 1][j + N] = (f[i - 1][j + N] + f[i][j + N] * P % MOD) % MOD;}}f[0][0 + N] = 1;for (int i = -n; i <= n; i++) {printf("%lld ", (f[0][i + N] + MOD) % MOD);}Used();return 0;
}

T3 之缘千里(fate)

发现括号序列合法等价于左括号的位置序列被 \(1,3,5,7,\dots,2n-1\) 偏序。令 \(nxt_i\) 表示这个数右边那个相同的数的位置。则我们考虑从前往后去匹配,若 \(nxt_i\) 能放左括号,那么 \(i\)\(nxt_i\) 都尽可能和最小的匹配即可。

#include <bits/stdc++.h>
#define il inlineusing namespace std;const int bufsz = 1 << 20;
char ibuf[bufsz], *p1 = ibuf, *p2 = ibuf;
#define getchar() (p1 == p2 && (p2 = (p1 = ibuf) + fread(ibuf, 1, bufsz, stdin), p1 == p2) ? EOF : *p1++)
il int read() {int x = 0; char ch = getchar(); bool t = 0;while (ch < '0' || ch > '9') {t ^= ch == '-'; ch = getchar();}while (ch >= '0' && ch <= '9') {x = (x << 1) + (x << 3) + (ch ^ 48); ch = getchar();}return t ? -x : x;
}
bool Beg;
const int N = 2e6 + 10;
int n, a[N];
int p[N], nxt[N];
int ans[N];
set<int> st;
bool End;
il void Used() {cerr << "\nUse " << (&Beg - &End) / 1024.0 / 1024.0 << "MB " << (double)clock() * 1000.0 / CLOCKS_PER_SEC << "ms\n";}
int main() {n = read();for (int i = 1; i <= 2 * n; i++) {a[i] = read();if (!p[a[i]]) p[a[i]] = i;else nxt[p[a[i]]] = i;}for (int i = 1; i <= n; i++) {st.insert(i * 2 - 1);}set<int>::iterator it;for (int i = 1; i <= 2 * n; i++) {if (!nxt[i]) continue;it = st.lower_bound(nxt[i]);if (it == st.end()) {ans[i] = ans[nxt[i]] = 0;continue;}st.erase(it);it = st.lower_bound(i);if (it == st.end()) {printf(":(\n");return 0;}ans[i] = ans[nxt[i]] = 1;st.erase(it);}for (int i = 1; i <= 2 * n; i++) {if (ans[i]) printf("(");else printf(")");}Used();return 0;
}

T4 怒气冲天(rectangle)

2025CSP-S模拟赛45

T1 T2 T3 T4
0 WA 0 WA 75 RE 10 WA

总分:85;排名:23/24。

T1 不但在傻逼题上浪费了 2h 而且挂了 100 分。

T1 染色(color)

傻逼题。不难发现没有任何一个质数是 4 的倍数,所以一直输出 1 2 3 4 即可。

#include <bits/stdc++.h>
#define il inlineusing namespace std;const int bufsz = 1 << 20;
char ibuf[bufsz], *p1 = ibuf, *p2 = ibuf;
#define getchar() (p1 == p2 && (p2 = (p1 = ibuf) + fread(ibuf, 1, bufsz, stdin), p1 == p2) ? EOF : *p1++)
il int read() {int x = 0; char ch = getchar(); bool t = 0;while (ch < '0' || ch > '9') {t ^= ch == '-'; ch = getchar();}while (ch >= '0' && ch <= '9') {x = (x << 1) + (x << 3) + (ch ^ 48); ch = getchar();}return t ? -x : x;
}
bool Beg;
const int N = 1e4 + 10;
int n;
bool End;
il void Usd() {cerr << "\nUsed: " << (&Beg - &End) / 1024.0 / 1024.0 << "MB " << (double)clock() * 1000.0 / CLOCKS_PER_SEC << "ms\n";}
int main() {freopen("color.in", "r", stdin);freopen("color.out", "w", stdout);n = read();if (n == 1) return printf("1\n1\n"), 0;if (n == 2) return printf("1\n1 1\n"), 0;if (n == 3) return printf("2\n1 1 2\n"), 0;if (n == 4) return printf("2\n1 1 2 2\n"), 0;if (n == 5) return printf("3\n1 1 2 2 3\n"), 0;if (n == 6) return printf("3\n1 1 2 2 3 3\n"), 0;printf("4\n");for (int i = 1; i <= n; i++) {printf("%d ", (i - 1) % 4 + 1);}Usd();return 0;
}

T2 序列(array)

赛时这题没分纯粹 T1 浪费太久时间了。

不难发现,把 \(a_i\) 排序是不影响的。题目让求 \(\sum b_i+k \min b_i\) 的最大值,考虑枚举 \(v=\min b_i\),然后从前往后去最大化 \(b_i\),这显然是最优的。

然后感性理解以及打表可以发现,这个 \(ans\) 是关于枚举的这个 \(v\) 是一个单峰函数。就可以去一个的三分。

然后我也不知道哪里假了,反正最后会和正确答案差一些。原因我认为有两个,一个是我三分可能写的有问题,另一个是这个单峰函数中可能会有一些平的线段,然后就死了。

但是关注到和正确答案差的很小,于是我们可以一个的投机取巧。

#include <bits/stdc++.h>
#define il inline
#define int long longusing namespace std;const int bufsz = 1 << 20;
char ibuf[bufsz], *p1 = ibuf, *p2 = ibuf;
#define getchar() (p1 == p2 && (p2 = (p1 = ibuf) + fread(ibuf, 1, bufsz, stdin), p1 == p2) ? EOF : *p1++)
il int read() {int x = 0; char ch = getchar(); bool t = 0;while (ch < '0' || ch > '9') {t ^= ch == '-'; ch = getchar();}while (ch >= '0' && ch <= '9') {x = (x << 1) + (x << 3) + (ch ^ 48); ch = getchar();}return t ? -x : x;
}
bool Beg;
const int N = 2e5 + 10;
int n, m, kk, D, a[N];
int s;
il int getval(int v) {int sum = D - v * s;int res = kk * v + v * m;for (int i = 1; i <= m && sum >= a[i]; i++) {res += min(n - v, sum / a[i]);sum -= min(n - v, sum / a[i]) * a[i];}return res;
} 
int solve() {n = read(), m = read(), kk = read(), D = read();for (int i = 1; i <= m; i++) {a[i] = read();}sort(a + 1, a + 1 + m);s = 0;for (int i = 1; i <= m; i++) s += a[i];int L = 0, R = min(n, D / s), ans = 0;while (L <= R) {int m1 = L + (R - L + 1) / 3, m2 = R - (R - L + 1) / 3;if (getval(m1) < getval(m2)) {ans = m1;L = m1 + 1;} else {ans = m2;R = m2 - 1;}}int mx = 0;for (int i = max(0ll, ans - 100); i <= min(min(n, D / s), ans + 100); i++) { // 他既然差的不多那我就在他周围去 max 不就好了。。。mx = max(mx, getval(i));}printf("%lld\n", mx);return 0;
}
bool End;
il void Usd() {cerr << "\nUsed: " << (&Beg - &End) / 1024.0 / 1024.0 << "MB " << (double)clock() * 1000.0 / CLOCKS_PER_SEC << "ms\n";}
signed main() {freopen("array.in", "r", stdin);freopen("array.out", "w", stdout);int qq = read();while (qq--) {solve();}Usd();return 0;
}

T3 树上询问(query)

这个题其实不难。

考虑拆成两条链上的贡献。那么 \(a \rightarrow lca(a,b)\) 路径上的一点 \(x\) 满足条件等价于 \(dep_a-dep_x=x\),即 \(dep_x+x=dep_a\)。那么我们考虑对于每个点 \(x\),以 \(dep_x+x\) 为下标在桶这个位置上 \(+1\),然后因为是树链上的一段我们搞一个主席树 + 树剖即可。对于 \(lca(a,b) \rightarrow b\) 路径上的点同理。

#include <bits/stdc++.h>
#define il inlineusing namespace std;const int bufsz = 1 << 20;
char ibuf[bufsz], *p1 = ibuf, *p2 = ibuf;
#define getchar() (p1 == p2 && (p2 = (p1 = ibuf) + fread(ibuf, 1, bufsz, stdin), p1 == p2) ? EOF : *p1++)
il int read() {int x = 0; char ch = getchar(); bool t = 0;while (ch < '0' || ch > '9') {t ^= ch == '-'; ch = getchar();}while (ch >= '0' && ch <= '9') {x = (x << 1) + (x << 3) + (ch ^ 48); ch = getchar();}return t ? -x : x;
}
bool Beg;
const int N = 3e5 + 10;
int n, qq;
vector<int> G[N];
int fa[N], dep[N], top[N], siz[N], son[N], id[N], tot, rk[N];
il void dfs1(int x, int father) {fa[x] = father;dep[x] = dep[fa[x]] + 1;siz[x] = 1;for (int y : G[x]) {if (y == fa[x]) continue;dfs1(y, x);siz[x] += siz[y];if (siz[y] > siz[son[x]]) son[x] = y;}
}
il void dfs2(int x, int t) {top[x] = t;id[x] = ++tot;rk[tot] = x;if (!son[x]) return;dfs2(son[x], t);for (int y : G[x]) {if (y == fa[x] || y == son[x]) continue;dfs2(y, y);}
}
il int getlca(int x, int y) {while (top[x] != top[y]) {if (dep[top[x]] < dep[top[y]]) swap(x, y);x = fa[top[x]];}if (dep[x] < dep[y]) swap(x, y);return y;
}
il int getdis(int x, int y) {return dep[x] + dep[y] - 2 * dep[getlca(x, y)];
}
int root1[N], root2[N];
struct Seg {struct node {int p, l, r, s;} tree[N << 5];#define lc tree[p].l#define rc tree[p].rint tot;il void build(int &p, int l, int r) {if (!p) p = ++tot;if (l == r) return;int mid = (l + r) >> 1;build(lc, l, mid), build(rc, mid + 1, r);}il void pushup(int p) {tree[p].s = tree[lc].s + tree[rc].s;}il int update(int p, int l, int r, int x, int v) {if (x > r) return p;int rt = ++tot;tree[rt] = tree[p];if (l == r) {tree[rt].s += v;return rt;}int mid = (l + r) >> 1;if (x <= mid) tree[rt].l = update(lc, l, mid, x, v);else tree[rt].r = update(rc, mid + 1, r, x, v);pushup(rt);return rt;}il int query(int p, int q, int l, int r, int x) {if (l == r) return tree[q].s - tree[p].s;int mid = (l + r) >> 1;if (x <= mid) return query(tree[p].l, tree[q].l, l, mid, x);else return query(tree[p].r, tree[q].r, mid + 1, r, x);}
} tr1, tr2;
il int query(int x, int y, int v) {int res = 0;while (top[x] != top[y]) {if (dep[top[x]] < dep[top[y]]) swap(x, y);res += tr1.query(root1[id[top[x]] - 1], root1[id[x]], -n, n, v);x = fa[top[x]];}if (dep[x] < dep[y]) swap(x, y);res += tr1.query(root1[id[y] - 1], root1[id[x]], -n, n, v);return res;
}
il int query1(int x, int y, int v) {int res = 0;while (top[x] != top[y]) {if (dep[top[x]] < dep[top[y]]) swap(x, y);res += tr2.query(root2[id[top[x]] - 1], root2[id[x]], -n, n, v);x = fa[top[x]];}if (dep[x] < dep[y]) swap(x, y);res += tr2.query(root2[id[y]], root2[id[x]], -n, n, v);return res;
}
bool End;
il void Usd() {cerr << "\nUsed: " << (&Beg - &End) / 1024.0 / 1024.0 << "MB " << (double)clock() * 1000.0 / CLOCKS_PER_SEC << "ms\n";}
int main() {freopen("query.in", "r", stdin);freopen("query.out", "w", stdout);n = read(), qq = read();for (int i = 1; i < n; i++) {int x = read(), y = read();G[x].push_back(y);G[y].push_back(x);}dfs1(1, 0);dfs2(1, 1);tr1.build(root1[0], -n, n);tr2.build(root2[0], -n, n);for (int i = 1; i <= n; i++) {root1[i] = tr1.update(root1[i - 1], -n, n, dep[rk[i]] + rk[i], 1);root2[i] = tr2.update(root2[i - 1], -n, n, dep[rk[i]] - rk[i], 1);}while (qq--) {int x = read(), y = read();int lca = getlca(x, y);int res = query(x, lca, dep[x]) + query1(y, lca, 2 * dep[lca] - dep[x]);printf("%d\n", res);}Usd();return 0;
}

T4 网络(network)

2025CSP-S模拟赛51

T1 T2 T3 T4
30 TLE 18 WA 54 TLE -

总分:102;排名:19/24。

打得很唐氏。T1 挂了 70 分,T2 本可以做出来的,没调出来。

T1 算术

考虑对原式进行变形(省略过程):

\[\left\{\begin{align*} & a_i \le \frac{a_j}{a_j-1}\land a_j>1 \\ & a_j=1\\ & a_i \le \frac{a_j}{1-a_j} \land a_j<1 \end{align*}\right. \]

然后不难发现这个 \(\frac{a_j}{a_j-1}\) 的值就是 \(1\)(差不多就是)。然后 \(O(n)\) 去跑就行了。考试时比较唐氏,只推导到了上面的式子,写了线段树,然后被卡常了。经过卡常是可以通过的。

#include <bits/stdc++.h>
#define il inlineusing namespace std;const int bufsz = 1 << 20;
char ibuf[bufsz], *p1 = ibuf, *p2 = ibuf;
#define getchar() (p1 == p2 && (p2 = (p1 = ibuf) + fread(ibuf, 1, bufsz, stdin), p1 == p2) ? EOF : *p1++)
il int read() {int x = 0; char ch = getchar(); bool t = 0;while (ch < '0' || ch > '9') {t ^= ch == '-'; ch = getchar();}while (ch >= '0' && ch <= '9') {x = (x << 1) + (x << 3) + (ch ^ 48); ch = getchar();}return t ? -x : x;
}
bool Beg;
const int maxm = 1e9;
const int N = 1e6 + 10;
int n, a[N];
int root;
int ll[N * 20], rr[N * 20];
long long s[N * 20];
int tot;
#define lc ll[p]
#define rc rr[p]
#define mid ((l + r) >> 1)
il void update(int &p, int l, int r, int x) {if (!p) p = ++tot;s[p]++;if (l == r) return;if (x <= mid) update(lc, l, mid, x);else update(rc, mid + 1, r, x);
}
int query(int p, int l, int r, int x, int y) {if (!p) return 0;if (l == x && y == r) return s[p];if (y <= mid) return query(lc, l, mid, x, y);else if (x > mid) return query(rc, mid + 1, r, x, y);else return query(lc, l, mid, x, mid) + query(rc, mid + 1, r, mid + 1, y);
}
bool End;
il void Usd() {cerr << "\nUsed: " << (&Beg - &End) / 1024.0 / 1024.0 << "MB " << (double)clock() * 1000.0 / CLOCKS_PER_SEC << "ms\n";}
signed main() {n = read();for (int i = 1; i <= n; i++) {a[i] = read();}long long ans = 0;for (int i = 1; i <= n; i++) {if (a[i] - 1 == 0) {ans += i - 1;} else if (a[i] - 1 > 0) {ans += query(root, -maxm, maxm, -maxm, (int)ceil(1.0 * a[i] / (a[i] - 1)) - 1);} else {ans += query(root, -maxm, maxm, (int)floor(1.0 * a[i] / (a[i] - 1)) + 1, maxm);}update(root, -maxm, maxm, a[i]);}printf("%lld\n", ans);Usd();return 0;
}

T2 刷墙

考场上基本写出来了。

区间 dp。\(f_{i,j}\) 表示 \([i,j]\) 米,只用完全包含在这个区间内的刷子,的最大颜色。转移很简单,无非是:

  1. 直接继承子区间。
  2. 从一个子区间向外扩展一种颜色。
  3. 两个子区间中间通过一种颜色链接。
#include <bits/stdc++.h>
#define il inlineusing namespace std;const int bufsz = 1 << 20;
char ibuf[bufsz], *p1 = ibuf, *p2 = ibuf;
#define getchar() (p1 == p2 && (p2 = (p1 = ibuf) + fread(ibuf, 1, bufsz, stdin), p1 == p2) ? EOF : *p1++)
il int read() {int x = 0; char ch = getchar(); bool t = 0;while (ch < '0' || ch > '9') {t ^= ch == '-'; ch = getchar();}while (ch >= '0' && ch <= '9') {x = (x << 1) + (x << 3) + (ch ^ 48); ch = getchar();}return t ? -x : x;
}
bool Beg;
const int INF = 0x3f3f3f3f;
const int N = 600 + 10;
int n;
struct node {int l, r;
} a[N];
int ll[N], tot, L;
int f[N][N];
struct ST {int mn[N][15], Log2[N];il void init() {for (int i = 2; i <= L; i++) Log2[i] = Log2[i / 2] + 1;for (int i = 1; i <= L; i++) mn[i][0] = INF;}il void init1() {for (int j = 1; j <= Log2[L]; j++) {for (int i = 1; i + (1 << j) - 1 <= L; i++) {mn[i][j] = min(mn[i][j - 1], mn[i + (1 << (j - 1))][j - 1]);}}}il int query(int l, int r) {int s = Log2[r - l + 1];return min(mn[l][s], mn[r - (1 << s) + 1][s]);}
} st[N];
il bool cmp(int x, int y) {return a[x].l != a[y].l ? a[x].l < a[y].l : a[x].r < a[y].r;
}
bool End;
il void Usd() {cerr << "\nUsed: " << (&Beg - &End) / 1024.0 / 1024.0 << "MB " << (double)clock() * 1000.0 / CLOCKS_PER_SEC << "ms\n";}
int main() {n = read();for (int i = 1; i <= n; i++) {int l = read() + 1, r = read();a[i] = {l, r};ll[++tot] = l;ll[++tot] = r;}sort(ll + 1, ll + 1 + tot);L = unique(ll + 1, ll + 1 + tot) - ll - 1;int mn = 2;for (int i = 1; i <= n; i++) {a[i].l = lower_bound(ll + 1, ll + 1 + L, a[i].l) - ll;a[i].r = lower_bound(ll + 1, ll + 1 + L, a[i].r) - ll;f[a[i].l][a[i].r] = 1;mn = min(mn, a[i].r - a[i].l + 1);}for (int i = 1; i <= L; i++) {st[i].init();for (int j = 1; j <= n; j++) {if (a[j].l <= i && i < a[j].r) {st[i].mn[a[j].l][0] = min(st[i].mn[a[j].l][0], a[j].r);}}st[i].init1();}for (int len = mn; len <= L; len++) {for (int i = 1; i + len - 1 <= L; i++) {int j = i + len - 1;f[i][j] = max(f[i + 1][j], f[i][j - 1]);for (int k = i; k < j; k++) {f[i][j] = max(f[i][j], f[i][k] + f[k + 1][j]);}for (int t = 1; t <= n; t++) {if (a[t].l < i || a[t].r > j) continue;if (a[t].l == i) f[i][j] = max(f[i][j], f[i + 1][j] + 1);if (a[t].r == j) f[i][j] = max(f[i][j], f[i][j - 1] + 1);}for (int k = i; k < j; k++) {if (ll[k] + 1 < ll[k + 1] && st[k].query(i, j) <= j) {f[i][j] = max(f[i][j], f[i][k] + f[k + 1][j] + 1);} if (k > i && (st[k - 1].query(i, j) <= j || st[k].query(i, j) <= j)) {f[i][j] = max(f[i][j], f[i][k - 1] + f[k + 1][j] + 1);}}}}printf("%d\n", f[1][L]);Usd();return 0;
}

T3 重复

T4 公交

http://www.hskmm.com/?act=detail&tid=34507

相关文章:

  • 软工问题总结10.19
  • AI元人文构想研究:理论溯源、跨学科审视与技术路径探析
  • NOAI官方学术支持
  • 【ARM CoreLink 系列 4.1 -- NI-700 interconnect hub 控制器详细介绍】
  • NPM(更新中)
  • 使用DAO模式改造学生信息管理系统
  • 【ARM CoreLink 系列 4 -- NIC-400 控制器详细介绍】
  • Linux反弹shell解析
  • 2025-10-18 MX-S 模拟赛 赛后总结【MX】
  • P1854 花店橱窗布置 解题笔记
  • P1896[SCOI2005]互不侵犯 解题笔记
  • habse
  • hbase
  • 微信小程序 在云函数本地调试时,总是提示node modules 未安装,立即安装。解决方法
  • Godot-C#场景之间的切换
  • 读书日记1
  • 【ARM CoreLink 系列 3.1 -- CCI-500 详细介绍 -上半部】
  • 央企程序员AI创业一个月感受 ✨
  • tryhackme-预安全-网络基础知识-局域网介绍-05
  • 10.19
  • 从众多知识汲取一星半点也能受益匪浅【day16(2025.10.18)】(加班但只加到四点半)
  • (个人思考)游戏技能的实现
  • 模拟赛T4 分析
  • ubuntu系统中containerd的cni网络配置
  • 十月阅读笔记
  • #20232408 2025-2026-1 《网络与系统攻防技术》实验二实验报告 - 20232408
  • 题解:P2672 [NOIP 2015 普及组] 推销员
  • 一文读懂Schnorr签名
  • 如何选择合适的SAP实施公司?3步锁定靠谱的SAP服务商
  • CSP-S2024