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学术活动真题+视频解析+备赛资料

USACO竞赛难度如何?USACO竞赛注意事项请查收!

USACO(美国计算机奥林匹克学术活动)作为一个全美范围内有影响力的编程学术活动,旨在选拔具备出色的计算机编程能力和问题解决能力的学生。对于那些希望在计算机科学领域深耕的学生来说,参加USACO学术活动并取得好成绩将为他们在申请藤校时提供坚实的基础。

USACO学术活动一直以来都受到许多学生的热爱和追捧。这个学术活动的选拔过程十分严格,竞争激烈,要求参赛选手具备扎实的编程基础和深入的算法思维。通过USACO学术活动的参与与训练,学生们能够不断提升自己的编程技巧和解决问题的能力,为他们日后在藤校的学习打下坚实的基础。

USACO注意事项

1.每次考试的时长通常为3到5小时,这段时间内,参赛选手可以自由选择在比赛开放期间的任何时间开始他们的比赛。

2.当参赛者登录学术活动系统并点击开始按钮时,计时器会开始计时。在规定的比赛结束时间之前,参赛者可以提交他们的代码。但一旦到达规定的比赛结束时间,选手将无法再提交他们的代码。因此,选手需要确保在比赛结束前完成并提交他们的代码。

3.每个段位(从铜到铂金)都会有3道题目,每道题目的满分为1000分。参赛者可以反复地提交他们的答案,系统会显示有多少个测试样例通过。这个特性可以帮助选手判断他们的答案在多少个测试样例上是正确的。

USACO学术活动难度如何?

在铜级中,学生需要适应USACO问题的复杂性,并且熟悉解决问题的格式。只需要掌握至少一种算法语言即可。

在银级中,学生需要掌握递归搜索、贪心算法等基本的问题求解技术,并确保程序在每个测试用例的时间和内存范围内运行。

在金级中,学生需要设计更复杂的标准算法,例如最短路径、动态规划等。在这个阶段,解决问题的方法不止一种,需要选择最优的方式。

在铂金级中,学生需要具备高级编程技巧和算法分析的能力,对算法有深入的了解,并且能够熟练应用解决复杂问题和开放问题。

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

USACO竞赛对参赛者有国籍要求吗?USACO竞赛是如何评分的?

美国计算机奥林匹克学术活动(USACO)是一个备受赞誉的中学生计算机编程学术活动。与国内的NOIP信奥赛类似,USACO学术活动也是为了选拔参加国际信息学奥林匹克学术活动(IOI)的队员。USACO学术活动在申请国内外大学时具有很高的含金量。

USACO学术活动旨在挑战中学生在计算机科学和编程方面的技能。这项学术活动不仅要求参赛者具备扎实的计算机基础知识,还需要他们具备解决实际问题的能力和创造性思维。

USACO对参赛者有国籍要求吗

USACO学术活动对参赛者的国籍没有要求,任何国家的个人都可以免费报名参加。不过,在注册账号的时候,您需要提供参赛者的国籍信息。

需要注意的是,USACO的后期集训营和国家队只接受美国籍的参与者。如果您并非美国籍或持有绿卡,就无法获得集训营的邀请函。

学术活动分为四个级别:铜级(Bronze)、银级(Silver)、金级(Gold)和白金级(Platinum)。每个级别的题目都涵盖了广泛的主题,包括图论、动态规划、贪心算法等。参赛者通过解决一系列难度递增的题目来积累成绩和经验。

USACO学术活动评分规则

在线打开题目,在线提交代码。代码提交后,系统会自动给出评分。

所有3个编程问题的分值都是333.333分,总分是1000分。对于每个问题,分数在每个测试案例中平均分配。

若:

有10个测试案例,那么每个测试案例分值就是33.33分

有11个测试案例,那么每个测试案例分值为30分

有12个测试案例,那么每个测试案例分值为27.77分

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

参加USACO学术活动的学生将从中受益匪浅:

1.USACO学术活动提供了一个锻炼编程能力的平台,让参赛者能够在实际问题中应用所学知识。

2.USACO学术活动为参赛者积累了一定的荣誉和成就,这对于申请国内外大学时的竞争非常有帮助。

3.参与USACO学术活动还能结识志同道合的同学,并与他们分享编程经验和技巧。

什么是USACO竞赛?USACO竞赛不同等级有何要求?

什么是USACO学术活动?

USACO是美国计算机奥林匹克学术活动的简称,它是一项在线编程学术活动,主要面向美国中学生甚至全球学生。通过参与这项学术活动,学生们可以提高他们的计算机编程技能,并从中受益终身。

尽管编程在很大程度上被视为理工科学生的领域,但它对于文科和商科学生也有着巨大的益处,因为编程训练本身所带来的思维优势可以极大地促进学习。

近年来,USACO学术活动的题目多样性有所增强。不仅要求参赛者具备扎实的算法能力,还需要熟练的代码编程能力。学术活动题目的难度逐渐加大,参赛者在不同的升级阶段面临不同的挑战。

USACO学术活动比赛时间

USACO学术活动每年举办共4次,时间分别是12月、1月和2月,3月会组织USACO学术活动公开赛。

考试时长月赛4小时,公开赛5小时,考试内容为3到编程题,考生可选择C/C++、Python、Java、 Pascal任意一种语言进行参赛。

晋级路径:青铜级→白银级→黄金级→铂金级,难度逐级递增。新注册的参赛选手需要从最低组别开始打起。

USACO学术活动不同等级有何要求?

铜升金

学生需要熟练掌握基本的编程常识,至少掌握一种编程语言,并具备基本的问题解决能力和简单算法的掌握。

银升金

要求参赛者理解一些抽象方法,如最短路径和动态规划。考试会考察学生对特定算法的掌握程度和优化意识,以及用数学和逻辑方法寻找最优解的能力。

金升铂金

考试进一步提升了算法的复杂性和困难程度。参赛者需对算法有更深入的了解,并且难度几乎无上限。

不同等级或公开赛对于参赛者的要求各不相同,越高等级的比赛对算法和编程能力的要求也越高。因此,参赛者需要不断扩展自己的知识,提升算法编程能力,以应对不同级别的挑战。

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

USACO学术活动的题目多样性增强,既考察了参赛者的算法能力,又考察了他们的代码编程能力。参加USACO学术活动不仅可以增加对算法和编程的理解和应用,还能提高解决问题的能力和逻辑思维能力。无论是铜、银、金还是铂金升级,参赛者都将获得宝贵的学术活动经验和技能提升。

USACO竞赛参赛步骤详细说明!参加USACO竞赛有何意义?

USACO学术活动是全球范围内非常受欢迎的计算机学术活动。它吸引了许多对编程感兴趣的学生,因为它不仅提供了一个展示他们技能的平台,还可以为他们未来申请名校和就业提供巨大的优势。特别是获得USACO学术活动的铂金奖项,更是在这方面具有极高的含金量。

USACO学术活动参赛步骤

选手需要在比赛开放期间进入官网学术活动页面比赛。

点击“Start the Contest!”开始比赛。

比赛开始后倒计时也随之开始,不能暂停。

进入题目后,可以点击红框处选择语言,可以切换题目语言为中文Chinese(zh):

完成作答后点击提交。比赛时需要按要求在自己的编程环境中完成题目,并提交cpp文件。

比赛会在时限过后自动结束(如已经获得满分,则可以手动提前结束,选手只需要在比赛结束前确保提交了已经完成的题目即可。

参加USACO学术活动有何意义?

参加USACO学术活动不仅是一种学术挑战,也是对学生自身能力的一种考验。通过参与学术活动,学生们可以锻炼自己解决问题的能力、逻辑思维能力和团队合作能力。USACO学术活动的题目往往涉及到复杂的编程算法,要求选手在有限的时间内解决问题,这对参赛选手来说是一次极好的锻炼机会。

获得USACO学术活动铂金奖项对于申请名校也是一大优势。美国顶级大学非常看重学生的编程能力和解决问题的能力,而USACO学术活动的奖项恰好能够证明学生在这方面的优秀表现。一项USACO学术活动的铂金奖项能够彰显一个学生在计算机科学领域的深厚造诣,向名校招生官展示出学生的学术潜力和独特魅力。

对于对编程感兴趣的学生来说,参加USACO学术活动并争取铂金奖项是非常有意义的。无论是在学术发展还是未来的职业道路上,USACO学术活动都可以为学生打下坚实的基础。通过参与学术活动,学生们可以不断提高自己的编程水平,拓宽自己的视野,为自己的未来铺就成功的道路。