本次模拟赛4道都是好题,第一题【蛇形矩阵】考查了数学知识,第二题【乌龟棋】是一道经典DPDPDP题,第三题【菜肴制作】是拓扑排序的模板题,第四题【拜年】为 FloydFloydFloyd

整体难度为黄到绿

然而本人成功地考出了100+0+100+5100 + 0 + 100 + 5100+0+100+5 的好成绩,在此总结一下原因:
1. DPDPDP题几乎没做(才131313道)
2. FloydFloydFloyd就变了下形就不注意细节
下次考模板,争取 300+300+300+ 吧⋯⋯\cdots\cdots⋯⋯


Problem A: 蛇形矩阵

题目描述

给定一个正整数 nnn,现在构造一个 n×nn \times nn×n 的蛇形矩阵,矩阵每个格子内填入一个数字。矩阵右上角填入1,左下角填入 n×nn \times nn×n,从 1…n×n1 \dots n \times n1…n×n 依次填入数字的顺序为 (1,n)→(1,n−1)→(2,n)→(3,n)→(2,n−1)→(1,n−2)→⋯→(n,n)(1,n)\to(1,n-1)\to(2,n)\to(3,n)\to(2,n-1)\to(1,n-2)\to\dots\to(n,n)(1,n)→(1,n−1)→(2,n)→(3,n)→(2,n−1)→(1,n−2)→⋯→(n,n)。譬如说 4×44 \times 44×4 的蛇形矩阵是:

7 6 2 1
13 8 5 3
14 12 9 4
16 15 11 10

现在给出 nnn,求 n×nn \times nn×n 的蛇形矩阵中第 xxx 行 yyy 列的数字是什么。

输入格式

一行,三个整数 n,x,yn,x,yn,x,y。

输出格式

一行,一个整数,表示 n×nn \times nn×n 的蛇形矩阵中第 xxx 行 yyy 列的数字。

输入输出样例

输入 #1

4 3 1

输出 #1

14

数据范围

对 40%40\%40% 的数据,n≤100n\le100n≤100。

对 100%100\%100% 的数据,n≤30000n\le30000n≤30000。

思路

一道4年级数学题,记住一个就行:行数 +++ 列数 −1=-1=−1= 斜线数,前 nnn 条斜线上共有 n×(n+1)÷2n\times(n+1)\div2n×(n+1)÷2 个数。

代码

#include <iostream>
#define int long long
using namespace std;signed main()
{int n, x, y;cin >> n >> x >> y;int s = n - y + 1;int a = x + s - 1;if (a <= n){int b = a - 1;if (b % 2 == 0){cout << b * (b + 1) / 2 + s;}else{cout << b * (b + 1) / 2 + x;}}else{int sum = n * n + 1;int l = n - x + 1;int m = y + l - 2;int k;if (m % 2 == 0){k = m * (m + 1) / 2 + y;}else{k = m * (m + 1) / 2 + l;}cout << sum - k;}return 0;
}
/**************************************************************Language: C++Result: AcceptedTime:0 msMemory:2020 kb
****************************************************************/

Problem B: 乌龟棋(P1541 [NOIP2010 提高组] 乌龟棋)

题目背景

小明过生日的时候,爸爸送给他一副乌龟棋当作礼物。

题目描述

乌龟棋的棋盘是一行 NNN 个格子,每个格子上一个分数(非负整数)。棋盘第 111 格是唯一的起点,第 NNN 格是终点,游戏要求玩家控制一个乌龟棋子从起点出发走到终点。

乌龟棋中 MMM 张爬行卡片,分成 444 种不同的类型( MMM 张卡片中不一定包含所有 444 种类型的卡片,见样例),每种类型的卡片上分别标有 1,2,3,41,2,3,41,2,3,4 四个数字之一,表示使用这种卡片后,乌龟棋子将向前爬行相应的格子数。游戏中,玩家每次需要从所有的爬行卡片中选择一张之前没有使用过的爬行卡片,控制乌龟棋子前进相应的格子数,每张卡片只能使用一次。

游戏中,乌龟棋子自动获得起点格子的分数,并且在后续的爬行中每到达一个格子,就得到该格子相应的分数。玩家最终游戏得分就是乌龟棋子从起点到终点过程中到过的所有格子的分数总和。

很明显,用不同的爬行卡片使用顺序会使得最终游戏的得分不同,小明想要找到一种卡片使用顺序使得最终游戏得分最多。

现在,告诉你棋盘上每个格子的分数和所有的爬行卡片,你能告诉小明,他最多能得到多少分吗?

输入格式

每行中两个数之间用一个空格隔开。

第 111 行 222 个正整数 N,MN,MN,M,分别表示棋盘格子数和爬行卡片数。

第 222 行 NNN 个非负整数,a1,a2,…,aNa_1,a_2,\dots,a_Na1​,a2​,…,aN​,其中 aia_iai​ 表示棋盘第 iii 个格子上的分数。

第 333 行 MMM 个整数,b1,b2,…,bMb_1,b_2,\dots,b_Mb1​,b2​,…,bM​,表示 MMM 张爬行卡片上的数字。

输入数据保证到达终点时刚好用光 MMM 张爬行卡片。

输出格式

111 个整数,表示小明最多能得到的分数。

输入输出样例

输入 #1

9 5

6 10 14 2 8 8 18 5 17

1 3 1 2 1

输出 #1

73

输入 #2

13 8

4 96 10 64 55 13 94 53 5 24 89 8 30

1 1 1 1 1 2 4 1

输出 #2

455

输入输出样例 1 说明

小明使用爬行卡片顺序为 111,111,333,111,222,得到的分数为

6+10+14+8+18+17=736+10+14+8+18+17=736+10+14+8+18+17=73。注意,

由于起点是 111,所以自动获得第 111 格的分数 666。

数据范围

对于 30%30\%30% 的数据有 1≤N≤301 \le N \le 301≤N≤30,1≤M≤121 \le M \le 121≤M≤12。

对于 50%50\%50% 的数据有 1≤N≤1201 \le N \le 1201≤N≤120,1≤M≤501 \le M \le 501≤M≤50,且 444 种爬行卡片,每种卡片的张数不会超过 202020。

对于 100%100\%100% 的数据有 1≤N≤3501 \le N \le 3501≤N≤350,1≤M≤1201 \le M \le 1201≤M≤120,且 444 种爬行卡片,每种卡片的张数不会超过 404040;0≤ai≤1000 \le a_i \le 1000≤ai​≤100,1≤i≤N1 \le i \le N1≤i≤N;1≤bi≤41 \le b_i \le 41≤bi​≤4,1≤i≤M1 \le i \le M1≤i≤M。

思路

数据范围太水,不用状压DPDPDP(我也不会)

整个四维DPDPDP就行了

状态转移方程:dp[i][j][k][l]=max(dp[i][j][k][l],dp[i−1][j][k][l]+dp[i][j][k][l] = max(dp[i][j][k][l],dp[i-1][j][k][l]+dp[i][j][k][l]=max(dp[i][j][k][l],dp[i−1][j][k][l]+当前卡片的分数,dp[i][j−1][k][l]+,dp[i][j-1][k][l]+,dp[i][j−1][k][l]+当前卡片的分数,dp[i][j][k−1][l]+,dp[i][j][k-1][l]+,dp[i][j][k−1][l]+当前卡片的分数,dp[i][j][k][l−1]+,dp[i][j][k][l-1]+,dp[i][j][k][l−1]+当前卡片的分数)))

代码(知道您们只看这个)

#include <iostream>
using namespace std;int n, m;
int a[355], b[10], dp[45][45][45][45];int main()
{cin >> n >> m;for (int i = 1; i <= n; ++i){cin >> a[i];}for (int i = 1; i <= m; ++i){int tmp;cin >> tmp;++b[tmp];}dp[0][0][0][0] = a[1];for (int i = 0; i <= b[1]; ++i){for (int j = 0; j <= b[2]; ++j){for (int k = 0; k <= b[3]; ++k){for (int l = 0; l <= b[4]; ++l){int t = i + j * 2 + k * 3 + l * 4 + 1;if (i){dp[i][j][k][l] = max(dp[i][j][k][l], dp[i-1][j][k][l] + a[t]);}if (j){dp[i][j][k][l] = max(dp[i][j][k][l], dp[i][j-1][k][l] + a[t]);}if (k){dp[i][j][k][l] = max(dp[i][j][k][l], dp[i][j][k-1][l] + a[t]);}if (l){dp[i][j][k][l] = max(dp[i][j][k][l], dp[i][j][k][l-1] + a[t]);}}}}}cout << dp[b[1]][b[2]][b[3]][b[4]];return 0;
}
/**************************************************************Language: C++Result: AcceptedTime:12 msMemory:18044 kb
****************************************************************/

Problem C: 菜肴制作(P3243 [HNOI2015]菜肴制作)

题目描述

知名美食家小 AAA 被邀请至 ATMATMATM 大酒店,为其品评菜肴。 $
ATM$ 酒店为小 AAA 准备了 NNN 道菜肴,酒店按照为菜肴预估的质量从高到低给予 111 到 NNN 的顺序编号,预估质量最高的菜肴编号为 111。由于菜肴之间口味搭配的问题,某些菜肴必须在另一些菜肴之前制作,具体的,一共有 MMM 条形如“ iii 号菜肴‘必须’先于 jjj 号菜肴制作”的限制,我们将这样的限制简写为 <i,j><i,j><i,j>。现在,酒店希望能求出一个最优的菜肴的制作顺序,使得小 AAA 能尽量先吃到质量高的菜肴:也就是说,(1)(1)(1)在满足所有限制的前提下,111 号菜肴“尽量”优先制作;(2)(2)(2)在满足所有限制,111 号菜肴“尽量”优先制作的前提下,222 号菜肴“尽量”优先制作;(3)(3)(3) 在满足所有限制,111 号和 222 号菜肴“尽量”优先的前提下,333 号菜肴“尽量”优先制作;(4)(4)(4) 在满足所有限制,111 号和 222 号和 333 号菜肴“尽量”优先的前提下,444 号菜肴“尽量”优先制作;(5)(5)(5)以此类推。
例 111:共 444 道菜肴,两条限制 <3,1><3,1><3,1>、<4,1><4,1><4,1>,那么制作顺序是 3,4,1,23,4,1,23,4,1,2。

例 222:共 555 道菜肴,两条限制 <5,2><5,2><5,2>、<4,3><4,3><4,3>,那么制作顺序是 1,5,2,4,31,5,2,4,31,5,2,4,3。

例 111 里,首先考虑 111,因为有限制 <3,1><3,1><3,1> 和 <4,1><4,1><4,1>,所以只有制作完 333 和 444 后才能制作 111,而根据 (3)(3)(3),333 号又应“尽量”比 444 号优先,所以当前可确定前三道菜的制作顺序是 3,4,13,4,13,4,1;接下来考虑 222,确定最终的制作顺序是 3,4,1,23,4,1,23,4,1,2。

例 222 里,首先制作 111 是不违背限制的;接下来考虑 222 时有 <5,2><5,2><5,2> 的限制,所以接下来先制作 555 再制作 222;接下来考虑 333 时有 <4,3><4,3><4,3> 的限制,所以接下来先制作 444 再制作 333,从而最终的顺序是 1,5,2,4,31,5,2,4,31,5,2,4,3。
现在你需要求出这个最优的菜肴制作顺序。无解输出 “Impossible!\rm Impossible!Impossible!”(不含引号,首字母大写,其余字母小写)

输入格式

第一行是一个正整数 DDD,表示数据组数。
接下来是 DDD 组数据。
对于每组数据:
第一行两个用空格分开的正整数 NNN 和 MMM,分别表示菜肴数目和制作顺序限制的条目数。
接下来 MMM 行,每行两个正整数 x,yx,yx,y,表示“xxx 号菜肴必须先于 yyy 号菜肴制作”的限制。(注意:MMM 条限制中可能存在完全相同的限制)

输出格式

输出文件仅包含 DDD 行,每行 NNN 个整数,表示最优的菜肴制作顺序,或者“Impossible!\rm Impossible!Impossible!”表示无解(不含引号)。

输入输出样例

输入 #1

3

5 4

5 4

5 3

4 2

3 2

3 3

1 2

2 3

3 1

5 2

5 2

4 3

输出 #1

1 5 3 4 2

Impossible!

1 5 2 4 3

样例解释

第二组数据同时要求菜肴 111 先于菜肴 222 制作,菜肴 222 先于菜肴 333 制作,菜肴 333 先于菜肴 111 制作,而这是无论如何也不可能满足的,从而导致无解。

数据范围

100%100\%100% 的数据满足 NM≤100000,D≤3NM \le 100000,D \le 3NM≤100000,D≤3。

思路

这题就是个拓扑排序的板子。

求字典序最小的排列是错的!!!{\color{Red}\colorbox{White}{求字典序最小的排列是错的!!!}}求字典序最小的排列是错的!!!​

可以举出反例:444种菜肴,限制为 <2,4><3,1><2,4><3,1><2,4><3,1><2,4><3,1><2,4><3,1><2,4><3,1>,
那么字典序最小的是 2,3,1,42,3,1,42,3,1,4,但题目要求的最优解是 3,1,2,43,1,2,43,1,2,4。

继续考虑,可以发现,如果最后一个数字尽可能大,那么这样是符合要求的,
因为如果设最后一个数字是 aaa,那么除了 aaa 之外的所有数都不会被放到最后一个位置,而这样就可以让前面所有小于 aaa 的数都尽量靠前,达到题目的目标。

因此,最优解就是符合条件的排列中,反序列的字典序最大的排列。

所以,在反图上跑拓扑排序,求最大字典序。在实现上,由于需要多次找出队列
中的最大值,因此用优先队列。

代码

#include <iostream>
#include <cstring>
#include <queue>
using namespace std;const int MAXN = 100005;
const int MAXM = 100005;int d, n, m, k;
int cnt, head[MAXN], in[MAXN], ans[MAXN];struct edge
{int to, nxt;
}e[MAXM];void init()
{k = cnt = 0;memset(head, 0, sizeof(head));memset(in, 0, sizeof(in));for (int i = 0; i < MAXM; ++i){e[i] = {};}
}void add(int u, int v)
{e[++cnt] = {v, head[u]};head[u] = cnt;
}void topo()
{priority_queue <int> pq;for (int i = 1; i <= n; ++i){if (!in[i]){pq.push(i);}}while (!pq.empty()){int cu = pq.top();pq.pop();++k;ans[k] = cu;for (int i = head[cu]; i; i = e[i].nxt){int cv = e[i].to;if (--in[cv] == 0){pq.push(cv);}}}
}int main()
{cin >> d;while (d--){init();cin >> n >> m;for (int i = 1; i <= m; ++i){int u, v;cin >> u >> v;add(v, u);++in[u];}topo();if (k < n){cout << "Impossible!";}else{for (int i = n; i; --i){cout << ans[i] << " ";}}cout << endl;}return 0;
}
/**************************************************************Language: C++Result: AcceptedTime:260 msMemory:4564 kb
****************************************************************/

Problem D: 拜年

题目描述

春节临近,小林同学被爸爸妈妈带着四处拜年(疫情期间不建议聚集哦0)。
为了避免感染病毒,今年他们片区的人做出了这样的决策:
拜访者和和被拜访者以及拜年经过的路径上全部人家都做了核酸检测之后拜年者才能去拜年。
现在给你这个片区的地图,求每个拜访者拜年的最短路径长度。

输入格式

第一行是 nnn,mmm,qqq。分别代表这个片区有 nnn 户人,这 nnn 户人家之间有 mmm 条路,qqq 代表操作次数。

接下来 mmm 行 每行有3个数 uuu,vvv,www。代表编号 uuu 的人家和编号 vvv 的人家之间存在一条长度为 w(w≤0)w(w \le 0)w(w≤0)的单向的路。(存在重边和自环)

接下来 qqq 行是操作共有两种情况:

  • 输入的第一个数 opopop 为 000 时,第二个数是 xxx,代表着编号 xxx 的这户人家去做了核酸检测,并且结果阴性。
  • 输入的第一个数 opopop 为 111 时,接下来输入两个数 xxx,yyy,代表着编号 xxx 的这户人家想去 yyy 号家里拜年。

输出格式

对每次 opopop 做如下操作:

  • opopop 为 000 的情况:

①如果 xxx 这户人家没做检测,则检测这户人家。此行不需要输出。

②如果 xxx 这户人家已经做了核酸检测,输出“ERROR!ERROR!ERROR! AtAtAt pointpointpoint xxx”

  • opopop 为 111 的情况:

①如果 xxx,yyy 这两户人家有任何一户没有做检测,输出“ERROR!ERROR!ERROR! AtAtAt pathpathpath xxx tototo yyy”

②如果 xxx,yyy 这两户人家之间没有一条符合条件的路径,输出“NoNoNo suchsuchsuch pathpathpath”

③如果 xxx 能去 yyy 家拜年,输出 xxx 到 yyy 的最短路。

输入输出样例

输入 #1

5 10 10

1 2 6335

0 4 5725

3 3 6963

4 0 8146

1 2 9962

1 0 1943

2 1 2392

4 2 154

2 2 7422

1 3 9896

0 1

0 3

0 2

0 4

0 4

0 1

1 3 3

1 1 1

0 3

0 4

输出 #1

ERROR! At point 4

ERROR! At point 1

0

0

ERROR! At point 3

ERROR! At point 4

数据范围

对于 20%20\%20% 的数据,保证 n≤10,m≤100,q≤100n \le 10,m \le 100,q \le 100n≤10,m≤100,q≤100

对于 50%50\%50% 的数据,保证 n≤50,m≤5000,q≤5000n \le 50,m \le 5000,q \le 5000n≤50,m≤5000,q≤5000

对于 80%80\%80% 的数据,保证 n≤200,m≤50000,q≤50000n \le 200,m \le 50000,q \le 50000n≤200,m≤50000,q≤50000

对于全部的数据,保证 n≤300,m≤100000,q≤100000n \le 300,m \le 100000,q \le 100000n≤300,m≤100000,q≤100000

思路

多加一个 checkcheckcheck 数组记录是否做过核酸检测

关键:每次某户人家(不妨设为 x)去做过核酸检测都要跑一遍Floyd{\color{Red}\colorbox{White}{关键:每次某户人家(不妨设为 x)去做过核酸检测都要跑一遍Floyd}}关键:每次某户人家(不妨设为 x)去做过核酸检测都要跑一遍Floyd​,否则只有 555 分(明白我怎么 555 分了吧)

一个新的问题:每次重跑 FloydFloydFloyd,时间复杂度最坏能到 O(n3q)O(n^3q)O(n3q),肯定炸了

蒙猜测量仔细推导后不难得出:只有以 xxx 为途经点的 disdisdis 值才有可能被更新,因此每次做过核酸检测后把 xxx 作为参数传进 FloydFloydFloyd 函数,里面跑双重循环即可,时间复杂度为 O(n2p)O(n^2p)O(n2p)

好像还是炸了  {\color{Green}\colorbox{White}{~~好像还是炸了~~}}  好像还是炸了  ​,但提交上去 AAA 了,估计数据较水

还是上代码吧,有哪位大佬奆学有更优解麻烦下方评论呗(打表卡常除外,重点提防wjy同学手动滑稽) OrzOrzOrz stOstOstO

#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;const int INF = 0x3f3f3f3f;
const int MAXN = 305;int n, m, q;
int dis[MAXN][MAXN], check[MAXN];void floyd(int k)
{for (int i = 0; i < n; ++i){for (int j = 0; j < n; ++j){dis[i][j] = min(dis[i][j], dis[i][k] + dis[k][j]);}}
}int main()
{scanf("%d%d%d", &n, &m, &q);memset(dis, INF, sizeof(dis));for (int i = 0; i < n; ++i){dis[i][i] = 0;}for (int i = 1; i <= m; ++i){int u, v, w;scanf("%d%d%d", &u, &v, &w);dis[u][v] = min(dis[u][v], w);}for (int i = 1; i <= q; ++i){int op, x, y;scanf("%d", &op);if (!op){scanf("%d", &x);if (check[x]){printf("ERROR! At point %d\n", x);}else{check[x] = 1;floyd(x);}}else{scanf("%d%d", &x, &y);if (check[x] && check[y]){if (dis[x][y] == INF){printf("No such path\n");}else{printf("%d\n", dis[x][y]);}}else{printf("ERROR! At path %d to %d\n", x, y);}}}return 0;
}
/**************************************************************Language: C++Result: AcceptedTime:36 msMemory:2388 kb
****************************************************************/

2月3日模拟赛分析及总结相关推荐

  1. 2021年10月8日模拟赛(保龄奇遇记)

    本场考试考的很撇,值得反思,暴露出很多问题,望及时的拨乱反正,改掉操之过急,心态不稳定的缺点 2021年10月8日模拟赛(保龄奇遇记) 太菜了 T1 话中有话 有些词是多义词.这就导致同一句话可能有多 ...

  2. 8月10日模拟赛题解

    前言 这次模拟赛应该是暑假以来最水的一场了,然而本来至少 210210210 的分数愣是被我弄成了 141141141,原因竟然是: const int MAXM = 5e5 + 5;struct e ...

  3. 8月21日模拟赛总结+扩展

    8.21 前言 T1 面试 分析 T2 Excel计数法 分析 T3 纸牌游戏 分析 T4 涨薪 分析 T5 富有数 分析 比赛总结 MAP及用法 MAP的存储 MAP的遍历 其它MAP的操作工具 M ...

  4. 2014年11月15日SIE赛意公司面试

    2014年11月15日SIE赛意公司面试 昨晚收到SIE(赛意)公司的面试通知,群面+单面共2个小时,今天中午就屁颠屁颠得跑到体育中心了.话休烦絮,直接进入正题. 1点半的面试,到公司门口已经1点15 ...

  5. 湖南师范大学2021年4月1日愚人赛解题报告与标程

    湖南师范大学2021年4月1日愚人赛解题报告与标程 A 题目描述 标程 B 题目描述 标程 C 题目描述 标程 D 题目描述 解法 标程 E 题目描述 解法 F 题目描述 解法 标程 G 题目描述 标 ...

  6. a股历史30年的大盘价_2020年7月30日大盘走势分析

    2020年7月30日大盘走势分析 严正声明:分析下面小程序炒股广告与本公众号zyh218642无关,纯属第三方平台自然生成,不要点开,谨防上当受骗. 7月份大盘走势分析 7月份大盘的多空压力与支撑位置 ...

  7. 计蒜客信息学3月普及组模拟赛

    A. 断幺九 题目链接 分值:100 时间限制:1000ms 测试点数目:10 B. 锈湖 题目链接 分值:100 时间限制:2000ms 测试点数目:10 C. 图  题目链接 分值:100 时间限 ...

  8. DD 摆磁铁(计蒜客信息学8月普及组模拟赛)

    DD 摆磁铁 这道题来自 计蒜客信息学8月普及组模拟赛 普及组!! 把我一个TG选手看懵了 看来我要回去打普及了 题目大意 给出一个n个节点的树,要把树上给定的2*m个节点两两配对,两个节点配对的产生 ...

  9. #5月23日湖北省赛总结 + 个人计划变更

    5月23日湖北省赛总结 总出题数:2/11 排名:57 好像是铜尾吧. 总结存在的问题: H题题意读错,自增难度: 当然出题人英语表达本来就有歧义: A的CRC循环码前导0非常坑: D题不知道为什么出 ...

最新文章

  1. (拆点+最小路径覆盖) bzoj 2150
  2. html最小化窗口,[转载]js实现窗口(支持拉伸,拖拽,最大化,最小化,滚动
  3. [云炬创业基础笔记]第二章创业者测试5
  4. java如何识别tiled地图_Egret学习-TiledMap使用
  5. ifix虚拟服务器,ifix的客户端和服务器
  6. 数据库工作笔记/设计思路-通过增加索引表为某库中其他表添加索引(描述信息)
  7. 中国聚乙烯醇缩丁醛(PVB)树脂市场趋势报告、技术动态创新及市场预测
  8. 代码行数统计工具SourceCounter
  9. 通过数据流处理-微信小程序生成临时二维码
  10. 并发编程 - io模型 - 总结
  11. C# 组成结构、数据类型、运算符 以及 基本语法练习
  12. 商业计划书-智能导盲仗
  13. java后台生成动态二维码
  14. 拼音工具类(多音字处理)
  15. opencv学习笔记(八)-IplImage数据结构
  16. 当你在追梦的路上抱怨生活太累快要放弃的时候,不妨看看我的这篇文章
  17. 安装corelDraw x8过程遇到的坑
  18. composer 镜像
  19. 量子计算机核心技术突破,量子芯片研发有突破 我们距离量子计算机不远了
  20. HDU-2660 Accepted Necklace

热门文章

  1. pom里配置阿里云仓库
  2. 如何更优雅的对接第三方API
  3. 25.Linux系统忘记登录密码解决办法(别着急,还能抢救一下)
  4. ESM2蛋白预训练模型 蛋白质、氨基酸向量表示
  5. 国产网络分析仪的介绍
  6. 码农、程序员、开发者
  7. Android 5.0 CardView 应用
  8. 如何使用JavaScript检查数字是否为素数?
  9. Elasticsearch数据读写过程
  10. 【Logback】<appender>标签详解