USACO2023年公开赛美国计算机奥赛竞赛金奖组问题二——Pareidolia

Pareidolia is the phenomenon where your eyes tend to see familiar patterns in images where none really exist -- for example seeing a face in a cloud. As you might imagine, with Farmer John's constant proximity to cows, he often sees cow-related patterns in everyday objects. For example, if he looks at the string "bqessiyexbesszieb", Farmer John's eyes ignore some of the letters and all he sees is "bessiexbessieb" -- a string that has contains two contiguous substrings equal to "bessie".

Given a string of length at most 2⋅105 consisting only of characters a-z, where each character has an associated deletion cost, compute the maximum number of contiguous substrings that equal "bessie" you can form by deleting zero or more characters from it, and the minimum total cost of the characters you need to delete in order to do this.

INPUT FORMAT (input arrives from the terminal / stdin):
The first line contains the string. The second line contains the deletion cost associated with each character (an integer in the range [1,1000]).
OUTPUT FORMAT (print output to the terminal / stdout):
The maximum number of occurrences, and the minimum cost to produce this number of occurrences.

SAMPLE INPUT:

besssie
1 1 5 4 6 1 1

SAMPLE OUTPUT:

1
4

By deleting the 's' at position 4 we can make the whole string "bessie". The character at position 4 has a cost of 4, so our answer is cost 4 for 1 instance of "bessie", which is the best we can do.

SAMPLE INPUT:

bebesconsiete
6 5 2 3 6 5 7 9 8 1 4 5 1

SAMPLE OUTPUT:

1
21

By deleting the "con" at positions 5-7, we can make the string "bebessiete" which has "bessie" in the middle. Characters 5-7 have costs 5+7+9=21, so our answer is cost 21 for 1 instance of "bessie", which is the best we can do.

SAMPLE INPUT:

besgiraffesiebessibessie
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1

SAMPLE OUTPUT:

2
7
This sample satisfies the constraints for the second subtask.

By deleting the "giraffe" at positions 4-10, we can make the string "bessiebessibessie", which has "bessie" at the beginning and the end. "giraffe" has 7 characters and all characters have cost 1, so our answer is cost 7 for 2 instances of "bessie", which is the best we can do.

SCORING:

Inputs 4-5: N≤2000
Inputs 6-8: All costs are 1
Inputs 9-17: No additional constraints.
Problem credits: Benjamin Qi

USACO2023年公开赛美国计算机奥赛竞赛金奖组问题三——Tree Merging

Having just completed a course in graph algorithms, Bessie the cow has begun coding her very own graph visualizer! Currently, her graph visualizer is only capable of visualizing rooted trees with nodes of distinct values, and it can only perform one kind of operation: merging.

In particular, a merging operation takes any two distinct nodes in a tree with the same parent and merges them into one node, with value equal to the maximum of the values of the two nodes merged, and children a union of all the children of the nodes merged (if any).

Unfortunately, after Bessie performed some merging operations on a tree, her program crashed, losing the history of the merging operations she performed. All Bessie remembers is the tree she started with and the tree she ended with after she performed all her merging operations.

Given her initial and final trees, please determine a sequence of merging operations Bessie could have performed. It is guaranteed that a sequence exists.

Each input consists of T (1≤T≤100) independent test cases. It is guaranteed that the sum of N over all test cases does not exceed 1000.

INPUT FORMAT (input arrives from the terminal / stdin):

The first line contains T, the number of independent test cases. Each test case is formatted as follows.
The first line of each test case contains the number of nodes N (2≤N≤1000) in Bessie's initial tree, which have values 1…N.

Each of the next N−1 lines contains two space-separated node values vi and pi (1≤vi,pi≤N) indicating that the node with value vi is a child node of the node with value pi in Bessie's initial tree.

The next line contains the number of nodes M (2≤M≤N) in Bessie's final tree.

Each of the next M−1 lines contains two space-separated node values vi and pi (1≤vi,pi≤N) indicating that the node with value vi is a child node of the node with value pi in Bessie's final tree.

OUTPUT FORMAT (print output to the terminal / stdout):

For each test case, output the number of merging operations, followed by an ordered sequence of merging operations of that length, one per line.
Each merging operation should be formatted as two distinct space-separated integers: the values of the two nodes to merge in any order.

If there are multiple solutions, output any.

SAMPLE INPUT:

1
8
7 5
2 1
4 2
5 1
3 2
8 5
6 2
4
8 5
5 1
6 5

SAMPLE OUTPUT:

4
2 5
4 8
3 8
7 8

SCORING:

Inputs 2-6: The initial and final trees have the same number of leaves.
Inputs 7-16: No additional constraints.
Problem credits: Aryansh Shrivastava

USACO2023年公开赛美国计算机奥赛竞赛金奖组问题一——Custodial Cleanup

Due to the disorganized structure of his mootels (much like motels but with bovine rather than human guests), Farmer John has decided to take up the role of the mootel custodian to restore order to the stalls.

Each mootel has N stalls labeled 1 through N (1≤N≤105) and M (0≤M≤105) corridors that connect pairs of stalls to each other bidirectionally. The ith stall is painted with color Ci and initially has a single key of color Si in it. FJ will have to rearrange the keys to appease the cows and restore order to the stalls.

FJ starts out in stall 1 without holding any keys and is allowed to repeatedly do one of the following moves:

Pick up a key in the stall he is currently in. FJ can hold multiple keys at a time.
Place down a key he is holding into the stall he is currently in. A stall may hold multiple keys at a time.
Enter stall 1 by moving through a corridor.
Enter a stall other than stall 1 by moving through a corridor. He can only do this if he currently holds a key that is the same color as the stall he is entering.
Unfortunately, it seems that the keys are not in their intended locations. To restore order to FJ's mootel, the ith stall requires that a single key of color Fi is in it. It is guaranteed that S is a permutation of F.

For T different mootels (1≤T≤100), FJ starts in stall 1 and needs to place every key in its appropriate location, ending back in stall 1. For each of the T mootels, please answer if it is possible to do this.

INPUT FORMAT (input arrives from the terminal / stdin):
The first line contains T, the number of mootels (test cases).
Each test case will be preceded by a blank line. Then, the first line of each test case contains two integers N and M.

The second line of each test case contains N integers. The i-th integer on this line, Ci, means that stall i has color Ci (1≤Ci≤N).

The third line of each test case contains N integers. The i-th integer on this line, Si, means that stall i initially holds a key of color Si (1≤Si≤N).

The fourth line of each test case contains N integers. The i-th integer on this line, Fi, means that stall i needs to have a key of color Fi in it (1≤Fi≤N).

The next M lines of each test case follow. The i-th of these lines contains two distinct integers, ui and vi (1≤ui,vi≤N). This represents that a corridor exists between stalls ui and vi. No corridors are repeated.

The sum of N over all mootels will not exceed 105, and the sum of M over all mootels will not exceed 2⋅105.

OUTPUT FORMAT (print output to the terminal / stdout):

For each mootel, output YES on a new line if there exists a way for FJ to return a key of color Fi to each stall i and end back in stall 1. Otherwise, output NO on a new line.

SAMPLE INPUT:
2

5 5
4 3 2 4 3
3 4 3 4 2
2 3 4 4 3
1 2
2 3
3 1
4 1
4 5

4 3
3 2 4 1
2 3 4 4
4 2 3 4
4 2
4 1
4 3

SAMPLE OUTPUT:

YES
NO
For the first test case, here is a possible sequence of moves:

Current stall: 1. Keys held: []. Keys in stalls: [3, 4, 3, 4, 2]
(pick up key of color 3)
Current stall: 1. Keys held: [3]. Keys in stalls: [x, 4, 3, 4, 2]
(move from stall 1 to 2, allowed since we have a key of color C_2=3)
Current stall: 2. Keys held: [3]. Keys in stalls: [x, 4, 3, 4, 2]
(pick up key of color 4)
Current stall: 2. Keys held: [3, 4]. Keys in stalls: [x, x, 3, 4, 2]
(move from stall 2 to 1 to 4 to 5, allowed since we have keys of colors C_4=4 and C_5=3)
Current stall: 5. Keys held: [3, 4]. Keys in stalls: [x, x, 3, 4, 2]
(pick up key of color 2 and place key of color 3)
Current stall: 5. Keys held: [2, 4]. Keys in stalls: [x, x, 3, 4, 3]
(move from stall 5 to 4 to 1 to 3, allowed since we have keys of colors C_4=4 and C_3=2)
Current stall: 3. Keys held: [2, 4]. Keys in stalls: [x, x, 3, 4, 3]
(pick up key of color 3 and place key of color 4)
Current stall: 3. Keys held: [2, 3]. Keys in stalls: [x, x, 4, 4, 3]
(move from stall 3 to stall 2 and place key of color 3)
Current stall: 2. Keys held: [2]. Keys in stalls: [x, 3, 4, 4, 3]
(move from stall 2 to stall 1 and place key of color 2)
Current stall: 1. Keys held: []. Keys in stalls: [2, 3, 4, 4, 3]
For the second test case, there exists no way for FJ to return a key of color Fi to each stall i and end back at stall 1.

SAMPLE INPUT:

5

2 0
1 2
2 2
2 2

2 1
1 1
2 1
2 1
1 2

2 1
1 1
2 1
1 2
1 2

2 1
1 1
1 2
2 1
1 2

5 4
1 2 3 4 4
2 3 5 4 2
5 3 2 4 2
1 2
1 3
1 4
4 5

SAMPLE OUTPUT:

YES
YES
NO
YES
NO

SCORING:

Test cases 3-6 satisfy N,M≤8.
Test cases 7-10 satisfy Ci=Fi.
Test cases 11-18 satisfy no additional constraints.
Problem credits: Eric Yachbes

USACO2023年公开赛美国计算机奥赛竞赛白金奖组问题三——Triples of Cows

There are initially N−1 pairs of friends among FJ's N (2≤N≤2⋅105) cows labeled 1…N, forming a tree. The cows are leaving the farm for vacation one by one. On day i, the ith cow leaves the farm, and then all pairs of the ith cow's friends still present on the farm become friends.

For each i from 1 to N, just before the ith cow leaves, how many ordered triples of distinct cows (a,b,c) are there such that none of a,b,c are on vacation, a is friends with b, and b is friends with c?

INPUT FORMAT (input arrives from the terminal / stdin):

The first line contains N.
The next N−1 lines contain two integers ui and vi denoting that cows ui and vi are initially friends (1≤ui,vi≤N).

OUTPUT FORMAT (print output to the terminal / stdout):

The answers for i from 1 to N on separate lines.

SAMPLE INPUT:
3
1 2
2 3

SAMPLE OUTPUT:
2
0
0
(1,2,3) and (3,2,1) are the triples just before cow 1 leaves.

After cow 1 leaves, there are less than 3 cows left, so no triples are possible.

SAMPLE INPUT:

4
1 2
1 3
1 4

SAMPLE OUTPUT:

6
6
0
0
At the beginning, cow 1 is friends with all other cows, and no other pairs of cows are friends, so the triples are (a,1,c) where a,c are different cows from {2,3,4}, which gives 3⋅2=6 triples.

After cow 1 leaves, the remaining three cows are all friends, so the triples are just those three cows in any of the 3!=6 possible orders.

After cow 2 leaves, there are less than 3 cows left, so no triples are possible.

SAMPLE INPUT:

5
3 5
5 1
1 4
1 2

SAMPLE OUTPUT:
8
10
2
0
0

SCORING:

Inputs 4-5: N≤500
Inputs 6-10: N≤5000
Inputs 11-20: No additional constraints.
Problem credits: Aryansh Shrivastava, Benjamin Qi

USACO2023年公开赛美国计算机奥赛竞赛白金奖组问题二——Good Bitstrings

For any two positive integers a and b, define the function gen_string(a,b) by the following Python code:

def gen_string(a: int, b: int):
	res = ""
	ia, ib = 0, 0
	while ia + ib < a + b:
		if ia * b <= ib * a:
			res += '0'
			ia += 1
		else:
			res += '1'
			ib += 1
	return res

Equivalent C++ code:

string gen_string(int64_t a, int64_t b) {
	string res;
	int ia = 0, ib = 0;
	while (ia + ib < a + b) {
		if ((__int128)ia * b <= (__int128)ib * a) {
			res += '0';
			ia++;
		} else {
			res += '1';
			ib++;
		}
	}
	return res;
}

ia will equal a and ib will equal b when the loop terminates, so this function returns a bitstring of length a+b with exactly a zeroes and b ones. For example, gen_string(4,10)=01110110111011.

Call a bitstring s good if there exist positive integers x and y such that s=gen_string(x,y). Given two positive integers A and B (1≤A,B≤1018), your job is to compute the number of good prefixes of gen_string(A,B). For example, there are 6 good prefixes of gen_string(4,10):

x = 1 | y = 1 | gen_string(x, y) = 01
x = 1 | y = 2 | gen_string(x, y) = 011
x = 1 | y = 3 | gen_string(x, y) = 0111
x = 2 | y = 5 | gen_string(x, y) = 0111011
x = 3 | y = 7 | gen_string(x, y) = 0111011011
x = 4 | y = 10 | gen_string(x, y) = 01110110111011

INPUT FORMAT (input arrives from the terminal / stdin):

The first line contains T (1≤T≤10), the number of independent test cases.
Each of the next T lines contains two integers A and B.

OUTPUT FORMAT (print output to the terminal / stdout):

The answer for each test case on a new line.

SAMPLE INPUT:

6
1 1
3 5
4 7
8 20
4 10
27 21

SAMPLE OUTPUT:

1
5
7
10
6
13

SCORING:

Input 2: A,B≤100
Input 3: A,B≤1000
Inputs 4-7: A,B≤106
Inputs 8-13: All answers are at most 105.
Inputs 14-21: No additional constraints.
Problem credits: Benjamin Qi

USACO2023年公开赛美国计算机奥赛竞赛白金奖组问题一——Pareidolia

Note: The time limit for this problem is 4s, twice the default. The memory limit for this problem is 512MB, twice the default.

Pareidolia is the phenomenon where your eyes tend to see familiar patterns in images where none really exist -- for example seeing a face in a cloud. As you might imagine, with Farmer John's constant proximity to cows, he often sees cow-related patterns in everyday objects. For example, if he looks at the string "bqessiyexbesszieb", Farmer John's eyes ignore some of the letters and all he sees is "bessiebessie".

Given a string s, let B(s)represent the maximum number of repeated copies of "bessie" one can form by deleting zero or more of the characters from s. In the example above, B("bqessiyexbesszieb")=2. Furthermore, given a string t, let A(t)
represent the sum of B(s)over all contiguous substrings s of t.

Farmer John has a string t of length at most 2⋅105consisting only of characters a-z. Please compute A(t), and how A(t) would change after U(1≤U≤2⋅105) updates, each changing a character of t. Updates are cumulative.

INPUT FORMAT (input arrives from the terminal / stdin):

The first line of input contains t.

The next line contains U, followed by U lines each containing a position p
(1≤p≤N) and a character c in the range a-z, meaning that the pth character of t
is changed to c.

OUTPUT FORMAT (print output to the terminal / stdout):

Output U+1 lines, the total number of bessies that can be made across all substrings of t before any updates and after each update.

SAMPLE INPUT:

bessiebessie
3
3 l
7 s
3 s

SAMPLE OUTPUT:

14
7
1
7
Before any updates, twelve substrings contain exactly 1 "bessie" and 1 string contains exactly 2 "bessie"s, so the total number of bessies is 12⋅1+1⋅2=14.

After one update, t is "belsiebessie." Seven substrings contain exactly one "bessie."

After two updates, t is "belsiesessie." Only the entire string contains "bessie."

SCORING:

Input 2: |t|,U≤300
Inputs 3-5: U≤10
Inputs 6-13: |t|,U≤105
Inputs 14-21: No additional constraints.
Problem credits: Brandon Wang and Benjamin Qi

藤校申请利器!USACO竞赛有哪些级别?参加USACO能锻炼哪方面能力?

USACO学术活动在计算机专业申请中的重要性不容忽视。对于计划选择计算机专业的同学来说,参加USACO学术活动可以极大地提升个人竞争力,成为一项必备的加分项。

USACO,全称为美国信息学和计算机奥赛(United States of America Computing Olympiad),是美国著名的计算机学术活动。该学术活动以其严谨的评测机制和高质量的题目而闻名。参加USACO学术活动不仅可以锻炼学生的编程能力和算法思维,还可以帮助学生建立良好的解决问题的方法论。

USACO学术活动级别

USACO学术活动分为四个等级:铜、银、金、白金四,每个等级对应难度不同,依次提升。

参加USACO学术活动可以从多个方面展现学生的优秀之处:

1.USACO学术活动对算法和数据结构的要求非常高。通过参与这样的学术活动,学生不仅能够深入学习和理解各种算法和数据结构,还能够通过解决复杂的编程问题锻炼自己的逻辑思维能力。这对于计划选择计算机专业的同学来说,是非常有帮助的。

2.USACO学术活动还对编程的实践能力提出了要求。在比赛中,参赛选手需要利用给定的时间和空间限制,在规定的语言和环境下,编写出高效、正确的程序。这种实践能力对于计算机专业的学习和工作都非常重要。通过参加USACO学术活动,学生可以在实际的编程环境中锻炼自己的能力,并提高自己的编程水平。

3.USACO学术活动还注重选手创新思维能力。在学术活动中,参赛选手常常需要与队友协作,共同解决复杂的编程问题。这要求选手具备良好的团队合作和沟通能力。同时,USACO学术活动也鼓励选手提供创新的解决方案,培养学生的创造性思维。

USACO学术活动对计划选择计算机专业的同学来说是一项非常重要的学术活动加分项。通过参加这个学术活动,学生可以全面提升自己的编程能力、算法思维能力和实践能力,展现自己在计算机领域的潜力和热情。

扫码免费领取USACO学术活动真题+视频解析+备赛资料

USACO竞赛值得参加吗?USACO竞赛历年的晋级分数线是多少?

USACO(美国计算机奥林匹克学术活动)是一项全球高中生信息学学术活动,旨在培养学生的算法和编程思维能力。对于热衷于计算机科学和算法的选手而言,参加USACO学术活动可以帮助他们锻炼技能并获得宝贵的经验。

USACO学术活动注重培养学生的计算机编程能力和解决实际问题的能力。参赛选手需要在注册后才能获得访问题库的权限,这样可以确保学术活动的公平性和严谨性。学术活动题目涵盖广泛的领域,包括数据结构、动态规划、图论等,要求选手具备扎实的编程基础和良好的逻辑思维能力。

USACO学术活动值得参加吗?

参加USACO学术活动不仅可以提升学生的编程水平,还可以为他们的大学申请增添加分项。在当今人工智能时代,计算机编程已经成为一项非常重要的技能。许多理工科院校非常青睐具备良好编程能力的学生,而USACO学术活动成绩的优异可以彰显学生在计算机科学和算法方面的杰出能力和潜力。

对于那些在USACO学术活动中取得优异成绩的学生,他们在大学申请中会受到额外的关注和重视。这是因为USACO学术活动成绩的出色表现证明了学生们在计算机科学领域具备非凡的才华和潜力。大学招生官员往往会将学术活动成绩作为评估学生综合能力的重要参考指标,这就为学生在大学申请过程中提供了一定的优势。

USACO学术活动是一项对计算机科学和算法有兴趣的高中生非常有价值的学术活动。它不仅提供了锻炼编程能力和解决问题能力的机会,还能为学生的大学申请增加加分项。通过参加USACO学术活动,学生们能够展示出自己的技术才能和创新思维,为未来学术和职业发展打下坚实基础。

USACO学术活动晋级分数线

2021-2023赛季的情况如下:

语言 2023公开赛 2022公开赛 2021公开赛
C++ 7451 6730 5156
Python 3.X 1360 1267 992
Python 2.X 13 14 18
Java 1862 2572 2257
其他 38 52 57

三个组别的晋级分数线相对稳定,大致在750分左右。这意味着USACO的评判标准并没有随着题目难度的提高而剧烈波动。无论题目的难度如何,这一稳定的晋级分数线为参赛学生提供了一个相对公正和可预测的竞争环境。

扫码免费领取USACO学术活动真题+视频解析+备赛资料

USACO竞赛晋级规则是怎样的?不同年纪如何规划USACO竞赛?

计算机专业是当下炙手可热的专业,计算机学术活动深受中小学家长追捧。USACO是美国计算机科学奥林匹克学术活动的缩写,该学术活动旨在通过提供计算机科学和算法问题的解决方案,促进学生们在计算机科学领域的学习和发展。那么USACO学术活动晋级规则是怎样的?不同年纪如何规划USACO学术活动?

USACO学术活动晋级规则

USACO学术活动晋级是一个学生在USACO学术活动中不断进阶的过程。参赛学生从青铜组开始,根据他们的成绩决定是否能够晋级到下一个组别。在USACO学术活动中,参赛选手需要完成一系列题目,并将编写的代码提交给系统进行自动评分。每个问题的最高得分为333.333分,总分为1000分。

如果选手成功拿到满分,他们将直接晋级到下一个级别的学术活动。这意味着他们的表现非常出色,充分展示了他们的编程能力和算法思维。

然而,如果选手没有达到满分,他们需要等到月赛考试结束后,官方会公布晋级分数线。晋级选手将有机会参加下一个月更高级别的学术活动。

不同年纪如何规划USACO学术活动?

3年级以下:

注重培养计算机学科兴趣。开始学习图形化编程,比如Scratch编程。这种编程方式不需要严格的语言语法,而是通过图形界面来理解编程逻辑,从而初步掌握编程概念。

4-6年级:

应开始学习正式的编程语言。Python、Java和C++都是使用最广泛的编程语言之一,也是行业从业者常用的语言之一。相对而言,Python和Java的学习相对简单,适合初学者。而C++的运行效率相对更高,适合需要更高性能的项目。初学编程的学生可以选择其中任何一种语言进行学习。

7年级及以上:

他们具备了学习算法的条件。算法是解决问题的思维方式,需要一定的理解能力。已经进入初中的学生可以开始学习USACO算法,这个阶段对学生来说应该没有太大的问题。

USACO准备的启动时间取决于学生的年级。阶段性的学习和逐渐深入的内容,可以帮助学生更好地准备USACO学术活动。通过逐步的学习编程语言和算法,学生可以逐渐提升他们的编程能力,为参加USACO学术活动做好准备。

扫码免费领取USACO学术活动真题+视频解析+备赛资料

USACO竞赛适合几年级学生参赛?参加USACO竞赛有什么好处?

对于许多藤校而言,USACO学术活动的经历和成绩是衡量学生计算机科学能力的重要指标之一。藤校对于计算机科学专业的要求高度严苛,需要学生们具备扎实的编程知识和卓越的解决问题的能力。而参加USACO学术活动并获得好的成绩,不仅能够展现学生的技术实力,还能证明他们在算法分析和程序设计等方面的能力。

USACO学术活动适合几年级学生参赛?

对于10至12年级的学生来说,他们需要同时保证校内GPA并参加物理碗、BBO、NEC等一系列高水平国际学术活动,因此学习时间非常紧张。因此,建议学生们在低年级就打好USACO的基础,后续只需加强,不需要花费过多时间。因此,6至9年级是参加USACO学术活动的“黄金年级”。

在这个阶段,学生们通常有相对充裕的时间,可以更好地安排学习和学术活动的准备。USACO学术活动有多个级别,随着级别的提升,对编程能力和复杂编程语言的要求也越高。因此,参加USACO学术活动对于学生们培养编程能力以及解决问题的能力非常有帮助。

在USACO学术活动中,学生们将面对各种算法和数据结构问题,需要运用编程知识解决这些问题。通过参加USACO学术活动,学生们可以提升自己的逻辑思维、问题解决和编程能力,这对他们未来学习计算机科学以及从事相关行业都会有很大帮助。

参加USACO学术活动有什么好处?

1.USACO学术活动给予了学生们一个展示自己技术能力的舞台。参赛选手需要通过编程解决一系列的问题,这些问题往往涉及复杂的算法和数据结构。在学术活动中,学生们需要分析问题,设计合适的算法,并实现代码来解决这些问题。这种解决问题的能力在藤校的学习中尤为重要,因为计算机科学领域中的许多挑战都需要学生们具备深入思考和创新的能力。

2.参加USACO学术活动也有利于学生们建立自信和展示他们的成果。取得好的学术活动成绩可以作为学生申请藤校的亮点,吸引招生官的关注。而USACO获奖选手往往表现出对编程的激情和对计算机科学的深入理解,这对于藤校来说是非常有吸引力的。

3.USACO学术活动作为一个全美范围内有影响力的编程学术活动,在培养学生们的计算机编程能力和解决问题的能力方面发挥着重要作用。对于那些希望在藤校深耕计算机科学领域的学生来说,USACO学术活动的经历和成绩将为他们在藤校的学习提供坚实的基础,并为他们未来的职业发展奠定坚实的基础。

扫码免费领取USACO学术活动真题+视频解析+备赛资料