USACO2021年美国公开赛白金组问题三—Routing Schemes

Farmer John's pasture can be regarded as a large 2D grid of square "cells" (picture a huge chessboard) labeled by the ordered pairs (i,j) for each 1≤iN, 1≤jN (1≤N≤150). Some of the cells contain grass.

A nonempty subset of grid cells is called "balanced" if the following conditions hold:

1.All cells in the subset contain grass.
2.The subset is 4-connected. In other words, there exists a path from any cell in the subset to any other cell in the subset such that every two consecutive cells of the path are horizontally or vertically adjacent.
3.If cells (x1,y) and (x2,y) (x1≤x2) are part of the subset, then all cells (x,y) with x1≤x≤x2 are also part of the subset.
4.If cells (x,y1) and (x,y2) (y1≤y2) are part of the subset, then all cells (x,y) with y1≤y≤y2 are also part of the subset.
Count the number of balanced subsets modulo 109+7.

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

The first line contains N.
The next N lines each contain a string of N characters. The j-th character of the i-th line from the top is equal to G if the cell at (i,j) contains grass, or . otherwise.

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

The number of balanced subsets modulo 109+7.

SAMPLE INPUT:

2
GG
GG

SAMPLE OUTPUT:

13
For this test case, all 4-connected subsets are balanced.

G. .G .. .. GG .G .. G. GG .G G. GG GG
.., .., G., .G, .., .G, GG, G., G., GG, GG, .G, GG

SAMPLE INPUT:

4
GGGG
GGGG
GG.G
GGGG

SAMPLE OUTPUT:

642
Here is an example of a subset that satisfies the second condition (it is 4-connected) but does not satisfy the third condition:

GG..
.G..
GG..
....

SCORING:

Test cases 1-4 satisfy N≤4.
Test cases 5-10 satisfy N≤20.
Test cases 11-20 satisfy no additional constraints.
Problem credits: Benjamin Qi

USACO2021年美国公开赛白金组问题二—Routing Schemes

Consider a network of N (2≤N≤100) nodes labeled 1…N. Each node is designated as a sender, a receiver, or neither. The number of senders, S, is equal to the number of receivers (S≥1).

The connections between the nodes in this network can be described by a list of directed edges each of the form ij, meaning that node i may route to node j. Interestingly, all of these edges satisfy the property that i<j, aside from K that satisfy i>j (0≤K≤2). There are no self-loops (edges of the form ii).

The description of a "routing scheme" consists of a set of S directed paths from senders to receivers such that no two of these paths share an endpoint. That is, the paths connect distinct senders to distinct receivers. A path from a sender s to a receiver r can be described as a sequence of nodes

s=v0→v1→v2→⋯→ve=r

such that the directed edges vi→vi+1 exist for all 0≤i<e. A node may appear more than once within the same path.

Count the number of distinct routing schemes such that every directed edge is traversed exactly once. Since the answer may be very large, report it modulo
109+7. It is guaranteed that there is at least one routing scheme satisfying these constraints.

Each input contains T (1≤T≤20) test cases that should be solved independently. It is guaranteed that the sum of N2 over all test cases does not exceed 2⋅104.

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

The first line of the input contains T, the number of test cases.

The first line of each test case contains the integers N and K. Note that S is not explicitly given within the input.

The second line of each test case contains a string of length N. The i-th character of the string is equal to S if the i-th node is a sender, R if the i-th node is a receiver, or . if the i-th node is neither. The number of Rs in this string is equal to the number of Ss, and there is at least one S.

The next N lines of each test case each contain a bit string of N zeros and ones. The j-th bit of the i-th line is equal to 1 if there exists a directed edge from node i to node j, and 0 otherwise. As there are no self-loops, the main diagonal of the matrix consists solely of zeros. Furthermore, there are exactly K ones below the main diagonal.

Consecutive test cases are separated by newlines for readability.

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

For each test case, the number of routing schemes such that every edge is traversed exactly once, modulo 109+7. It is guaranteed that there is at least one valid routing scheme for each test case.

SAMPLE INPUT:

2

8 0
SS....RR
00100000
00100000
00011000
00000100
00000100
00000011
00000000
00000000

13 0
SSS.RRRSS.RR.
0001000000000
0001000000000
0001000000000
0000111000000
0000000000000
0000000000000
0000000000000
0000000001000
0000000001000
0000000000110
0000000000000
0000000000000
0000000000000

SAMPLE OUTPUT:

4
12
For the first test case, the edges are 1→3,2→3,3→4,3→5,4→6,5→6,6→7,6→8.

There are four possible routing schemes:

1→3→4→6→7,2→3→5→6→8
1→3→5→6→7,2→3→4→6→8
1→3→4→6→8,2→3→5→6→7
1→3→5→6→8,2→3→4→6→7
For the second test case, the edges are 1→4,2→4,3→4,4→5,4→6,4→7,8→10,9→10,10→11,10→12.

One possible routing scheme consists of the following paths:

1→4→5
2→4→7
3→4→6
8→10→12
9→10→11
In general, senders {1,2,3} can route to some permutation of receivers {5,6,7} and senders {8,9} can route to some permutation of receivers {11,12}, giving an answer of 6⋅2=12.

SAMPLE INPUT:

2

5 1
SS.RR
00101
00100
10010
00000
00000

6 2
S....R
001000
000100
010001
000010
001000
000000

SAMPLE OUTPUT:

3
1
For the first test case, the edges are 1→3,1→5,2→3,3→1,3→4.

There are three possible routing schemes:

1→3→1→5, 2→3→4
1→3→4, 2→3→1→5
1→5, 2→3→1→3→4
For the second test case, the edges are 1→3,2→4,3→2,3→6,4→5,5→3.

There is only one possible routing scheme: 1→3→2→4→5→3→6.

SAMPLE INPUT:

5

3 2
RS.
010
101
100

4 2
.R.S
0100
0010
1000
0100

4 2
.SR.
0000
0011
0100
0010

5 2
.SSRR
01000
10101
01010
00000
00000

6 2
SS..RR
001010
000010
000010
000010
100101
000000

SAMPLE OUTPUT:

2
1
2
6
24

Some additional small test cases.

SCORING:

Test cases 4-5 satisfy N≤6.
Test cases 6-7 satisfy K=0.
Test cases 8-12 satisfy K=1.
Test cases 13-24 satisfy K=2.

Problem credits: Benjamin Qi

USACO2021年美国公开赛白金组问题一—United Cows of Farmer John

There are N cows participating in delegation selection (1≤N≤2⋅105). They are standing in a line, and cow i has breed bi.

The delegation will consist of a contiguous interval of at least three cows - that is, cows l…r for integers l and r satisfying 1≤l<r≤N and r−l≥2. Three of the cows in the chosen interval are marked as delegation leaders. For legal reasons, the two outermost cows of the chosen interval must be leaders. Moreover, to avoid intra-breed conflict, every leader must be of a different breed from the rest of the delegation (leaders or not).

Help the UCFJ determine (for tax reasons) the number of ways they might choose a delegation to send to the IOI. Two delegations are considered different if they have different members or different leaders.

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

The first line contains N.
The second line contains N integersb1,b2,…,bN, each in the range [1,N].

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

The number of possible delegations, on a single line.

Note that the large size of integers involved in this problem may require the use of 64-bit integer data types (e.g., a "long long" in C/C++).

SAMPLE INPUT:

7
1 2 3 4 3 2 5

SAMPLE OUTPUT:

9
Each delegation corresponds to one of the following triples of leaders:

(1,2,3),(1,2,4),(1,3,4),(1,4,7),(2,3,4),(4,5,6),(4,5,7),(4,6,7),(5,6,7).

SCORING:

Test cases 1-2 satisfy N≤50.
Test cases 3-4 satisfy N≤500.
Test cases 5-8 satisfy N≤5000.
Test cases 9-20 satisfy no additional constraints.
Problem credits: Benjamin Qi

USACO等级难度分析!USACO打到什么级别对升学有帮助?

USACO(USA Computing Olympiad)是一项旨在培养学生算法和编程思维的学术活动。这个赛事在如今的互联网公司中,尤其是偏向人工智能技术的公司内是非常受重视的。原因在于,参赛者们通过解决学术活动中的核心问题,培养出了独立思考和解决实际问题的能力。

USACO赛制

参赛对象:任意年级初高中生

考试地点:线上比赛,个人参赛,通过登录USACO官网,在线提交代码

比赛语言:C、C++、Java 或 Python

参赛费用:比赛参与是完全免费的

学术活动时间:一学年内举办4次,月赛通常是12月、1月和2月,USACO美国公开赛在3月或4月举行。学术活动在周五至周日开放。

USACO等级难度分析

青铜:铜级考试只要基本的编程常识,会至少一种编程语言。铜级的编程限制时间还是够用的,大部分初次参赛的选手都能在本次考试中晋级白银级。

白银:需要基本的问题解决能力和简单算法(例如:贪心算法,递归搜索等),还需了解基础数据结构。从白银级开始,选手需要寻找更好的算法才能使程序在规定时间内跑完。

黄金:需要有一定的算法基础,理解一些抽象的方法(例:最短路径,动态规划),并且对数据结构有比较深的了解。

白金:需要有很高的编程基础,对算法有深入的了解。部分比赛问题最后的优化方案,可能不只一个,得出的答案也不只一个。

USACO打到什么级别对留学申请有帮助?

进入Platinum Division(白金级别)

这对于申请一些名校如卡内基梅隆大学、佐治亚理工学院和加州大学伯克利分校来说,同样是一个很大的加分项。

Gold Division(黄金级别)

这个成绩相当不错,可以为你在申请一些好学校如加州大学伯克利分校、加利福尼亚大学洛杉矶分校和佐治亚理工学院等提供一些额外的加成。

同时,进入USACO Silver Division(银级)也是一个亮点。这个成绩为你在申请很多大学时增加了一些亮点。

usaco学术活动真题

usaco参考书

【扫码免费领取】USACO真题+咨询报名事项+一对一备考规划!

总之,通过在USACO比赛中获得这样的成绩,无论是在申请名校还是普通大学,都能够提高你的竞争力。祝贺你在USACO比赛中取得的优异成绩!希望你在接下来的申请过程中能够获得更好的结果。

USACO竞赛适合什么样的学生?USACO竞赛是如何分级的?含金量高吗?

USACO学术活动是麻省理工学院(MIT)官方推荐的一项计算机学术活动,被广泛认可并被用作计算机相关课程的参考。该学术活动的成绩在国际范围内被广泛接受和认可。那么USACO学术活动适合什么样的学生?USACO学术活动是如何分级的?含金量高吗?

USACO学术活动适合什么样的学生?

参加USACO学术活动对于对计算机编程感兴趣的学生或者准备申请计算机专业的学生来说,是一种提升自身编程能力和算法设计能力的绝佳机会。通过参加USACO学术活动,学生可以锻炼自己的问题解决能力和创新思维,同时也可以为未来的学业和职业发展打下坚实的基础。对于那些热衷于STEM专业的学生来说,USACO学术活动无疑是一个值得尝试和参与的挑战。

USACO学术活动是如何分级的?

USACO比赛分为铜级、银级、金级和白金级四个难度级别,难度逐级增加。学生需要先在上一级学术活动中达到最低分数标准或者获得满分,才能在当前赛季晋级。

铜级考试是USACO的初始级别,学生只需要注册一个USACO账号即可参加。这个级别的考试要求学生掌握基本的编程知识和技巧,能够用编程语言完成简单的任务和算法。

银级考试需要学生具备基本的问题解决能力,能够使用简单的算法和基础数据结构来解决问题。在这个级别中,学生需要进一步提升自己的编程能力和算法设计能力。

金级考试要求学生不仅要具备良好的算法知识,还需要对各种数据结构有较深的理解。在这个级别中,学生将面对更复杂和难度较高的编程问题,需要灵活地运用算法和数据结构来解决。

白金级考试是USACO学术活动的最高级别,要求学生具备极高的编程基础和对算法的深入理解。在这个级别中,学生将面对一些挑战性的问题和算法难题,需要运用高级的数据结构和算法来解决。

USACO学术活动的含金量高吗?

首先,它是美国计算机科学奥林匹克的选拔赛,被认为是评估学生在计算机科学领域才能的重要标准。其次,USACO学术活动获奖者有机会参加国际计算机科学奥林匹克(IOI),代表美国与世界各地的顶尖选手进行较量。参加USACO学术活动不仅能够锻炼解决问题的能力,还可以展示个人的才华和潜力。

usaco学术活动真题

usaco参考书

【扫码免费领取】USACO真题+咨询报名事项+一对一备考规划!

USACO竞赛有门槛吗?不同级别的考试难度和含金量详细剖析!

作为STEM体系中的一项高含金量计算机学术活动,它吸引了许多有志于深入学习计算机科学的学生参与。对于那些希望获得美本藤校录取机会的学生来说,参加USACO学术活动是一个非常重要的选择。

USACO学术活动的参与门槛相对较低,任何注册参赛的人都可以参加考试和解题。学术活动分为四个不同的等级,每个等级的考察内容和难度各不相同,以此来评估参赛者的计算机能力和编程水平。

在USACO学术活动中,参赛者根据自己的编程能力和算法知识来解决一系列问题。USACO学术活动分为四个级别,分别是铜级、银级、金级和铂金级。

不同级别的考试难度和含金量:

铜级是USACO学术活动的入门级别,难度较低。参加这个级别的考试需要掌握一定的编程基础知识,并对算法和数据结构有一些基本认识。铜级考试相当于AMC10的难度,可以证明选手在编程基本功方面表现不错。

银级是USACO学术活动的第二个级别,难度相对铜级有所提升。参加银级考试需要对计算机算法有一定的了解。它的含金量约等于AMC12,对于业余爱好者和文科专业学生来说,通过银级考试可以证明自己在计算机能力方面的多项发展能力。

金级是USACO中比较难的级别,全面考察计算机算法知识。参加金级考试需要有较好的编程能力。金级考试对于学生申请海外TOP30计算机专业非常有裨益。此外,金级别也是藤校申请中备受认可的一个奖项。

铂金级是USACO中最高级别,难度非常高,可以与数学中的AIME学术活动对标。能够达到铂金级别的学生并不多。铂金级别对于学生申请海内外的学校都有非常大的帮助。能够达到铂金级的水平,学生的录取概率会非常高。

usaco学术活动真题

usaco参考书

【扫码免费领取】USACO真题+咨询报名事项+一对一备考规划!

参加USACO学术活动并获得高级别的荣誉对学生的计算机专业发展以及申请学校都有很大的帮助。不同级别的考试难度和含金量不同,学生可以根据自己的编程能力和兴趣选择参加适合自己水平的级别。

文科生有必考参加USACO竞赛吗?USACO竞赛不同级别考察什么知识点?

对于文科学习的同学们来说,如果对计算机科学感兴趣,并且愿意投入时间和精力去学习和参加USACO学术活动,那么参加USACO学术活动无疑是一个很好的选择。它不仅可以丰富个人的学习经历,还能为将来的职业发展打下坚实的基础。

USACO学术活动对于文科学习的同学们来说,确实是一个不错的机会。虽然它主要是以计算机科学为基础,但是它涉及到的领域也广泛,包括算法、数据结构等。

USACO学术活动不同级别考察什么知识点?

USACO奥赛参赛级别:总共有4个级别,铜级,银级,金级,白金级,难度依次递增。每个人都必须从铜级开始参赛。

铜级

考核知识点:基础数组,多重循环,复合判断、枚举算法

银级

考核知识点:基本数据结构、贪心、递归、递推等基本算法

金级

考核知识点:堆、栈、树、链表等高级数据结构,动态规划等高级算法,算法时间和空间复杂度

铂金级

考核知识点:各类高级的数据结构,尤其是需要算法的时间和空间复杂度。总分1000分,每道题333.3分。每道题有10个测试点,通过一个可得33.33分。青铜、白银、黄金、白金级别的比赛都是3道题。

参加USACO学术活动能够给文科学习的同学们带来很多好处:

1.USACO学术活动的成绩是国际通用的,对于将来申请国外名校或者参加国际科研项目都有一定的加分作用。

2.USACO学术活动的题目设计很有趣,能够激发学生的学习兴趣和解决问题的能力。

3.USACO学术活动也提供了很多资源和机会,比如参加集训、与全球顶尖选手交流等,这对于提升个人能力和开拓国际视野也是非常有益的。

usaco学术活动真题

usaco参考书

【扫码免费领取】USACO真题+咨询报名事项+一对一备考规划!

要想在USACO学术活动中取得卓越的成绩并不是一件轻松的事情:

首先,参加USACO学术活动需要有一定的编程能力和数学基础。其次,USACO学术活动的题目难度较大,需要学生具备良好的逻辑思维和问题解决能力。最后,USACO学术活动需要长期持续的学习和训练,需要投入大量的时间和精力。

USACO竞赛拿奖必看!USACO竞赛超全备赛攻略!附竞赛真题

在这个信息时代,计算机科学已经成为了一门重要的跨学科,而USACO学术活动正是为了培养学生在计算机科学方面的创造力和实践能力。

想要成功学习并在学术活动中取得好成绩,需要付出一定的时间和精力。

以下是一些建议:

程序设计基础:首先,你需要建立扎实的编程基础。学习一种编程语言,如Python、C++或Java,并熟悉其基本语法和数据结构。掌握基本的算法和数据结构,如数组、链表、栈、队列、排序算法等。

学习算法和数据结构:USACO学术活动涉及许多算法和数据结构。学习常用的算法,如搜索算法、动态规划、贪心算法和图算法。熟悉常见的数据结构,如树、图、堆等。

解决实际问题:参加学术活动前,练习解决各种类型的实际问题。USACO学术活动通常以真实生活中的问题为题材,例如路径规划、组合优化、图论等。通过解决实际问题,提高你的问题分析和算法应用能力。

刷题和模拟考试:大量刷题是提高学术活动水平的关键。USACO学术活动有一系列的题库,包含不同难度的题目。根据自己的水平选择适当的题目进行练习。模拟考试可以帮助你熟悉学术活动的节奏和规则,并提供实时反馈。

参加培训班和学术活动营地:参加USACO的培训班和学术活动营地可以得到专业的指导和培训。培训班和学术活动营地会提供一对一的指导、讲座和实践机会,帮助你提高编程和解题能力。

学习资源:利用在线资源和教材来学习USACO相关的知识。网上有许多免费的教程、编程挑战和视频教学,可以帮助你加深对编程和算法的理解。

【扫码免费领取】USACO真题+咨询报名事项+一对一备考规划!

USACO学术活动学习是一项长期的过程,需要耐心和坚持。不要过于追求高分,要注重学习和提高自己的能力。通过不断学习和练习,你将逐渐掌握USACO学术活动所需的技能,取得好成绩。

另外,请记住,USACO学术活动是一项具有挑战性的学术活动,成功与否不仅取决于你的学习和努力,还取决于你的天赋和数学思维能力。不要泄气,持之以恒地学习和提高自己的能力,相信你有机会在USACO学术活动中表现出色!

USACO竞赛适合什么样的学生?不同级别奖项含金量如何?需要具备什么基础?

USACO学术活动是一项为计算机科学学生提供展示才能和提升能力的重要平台。通过参与学术活动,学生可以不断锻炼自己的编程和算法技巧,并有机会被顶尖学府看重。无论是对于学术发展还是个人成长,USACO学术活动都具有重要的意义。

USACO学术活动提供了不同级别的挑战,让学生在不同的阶段有机会展示他们的编程能力。对于有志于在计算机科学领域有所作为的学生来说,参加和获得USACO的奖项是一种重要的荣誉和认可。

USACO学术活动适合学生

任意年级中学生(12-18岁)

高三学生也可以参加12月月赛,实力突出的选手可以在12月RD申请前获得白金级,不失为一波背景提升机会。

不同级别奖项含金量如何?需要具备什么基础?

USACO 学术活动包含铜级、银级、金级和铂金级四个级别。随着级别的递增,难度和含金量也逐渐增加。

铜级

学生初次注册账号即可成为铜级参赛选手,而且注册是免费的。

银级

要成为银级选手,学生需要掌握扎实的计算机编程基础,并对算法和数据结构有基本的认识。银级在文科方向有很大的含金量,相比于没有计算机背景的文科申请学生,晋级到USACO学术活动银级的学生将具备更多的优势。

金级

要进入金级,学生需要具备较强的逻辑思维能力和编程能力。金级对学生的要求更高,同时含金量也更高。金级及以上的奖项对于计算机科学专业的申请者来说,是证明他们能够发挥计算机潜力的强有力证据。

铂金级

USACO的铂金级别含金量极高,对申请任何海内外名校的学生都非常有用。

usaco学术活动真题

usaco参考书

【扫码免费领取】USACO真题+咨询报名事项+一对一备考规划!

参加USACO学术活动对学生有许多好处:

它提供了一个锻炼编程和算法的机会,帮助学生不断提高自己的技能。

USACO学术活动的成绩可以作为申请藤校和其他顶尖学府的重要参考,增加学生被录取的机会。

参与USACO学术活动还能与来自全国各地的优秀学生进行交流和竞争,拓宽自己的视野,扩展社交圈子。

美本申请必备!3-12年级该如何规划USACO竞赛?

USACO学术活动作为一个全球热门的计算机科学学术活动,近年来备受学生家长的追捧。虽然USACO学术活动的含金量很高,但是要想获得最高奖项——铂金奖,需要进行长期的学习并面对一定的难度。在学习USACO学术活动备考时,可以根据年级制定不同的学习计划和目标。

USACO学术活动备考年级规划

以下是一份常规的备考年级规划供参考:

3-5年级

在这个阶段,重点是培养孩子对计算机科学的兴趣和基本的编程思维能力。学生可以了解一些基本的概念和算法原理。通过编程游戏和趣味项目,引导孩子们探索编程的乐趣,并逐渐培养解决问题的能力。这个阶段的学习可以使用一些简单易懂的编程语言,如Scratch或Blockly。

6-8年级

进入这个阶段的学生已经具备了学习编程的基本能力,可以开始准备USACO学术活动的铜级。为了提高编程能力,建议学生重视语言的选择。相对来说,Python或Java是较好入门的语言,学生可以通过自学或者辅导来提高编程技能。此外,学习编程中的基本概念和算法原理也是非常重要的。

9-10年级

在这个阶段,学生已经具备了较为扎实的基础,可以开始深入学习数据结构和算法的知识,并参加USACO学术活动的银级或金级。这些比赛的难度较高,学生可以参加辅导课程,跟着老师系统地学习和训练。除了学习基础知识外,解题技巧也是必不可少的,学生需要通过大量的练习积累经验,提高自己的思维能力和编程水平。

11-12年级

这个阶段可以说是学术活动的最后阶段,因此需要学生充分利用有限的时间来准备。学生应该着重提高解题能力,并在11年级争取拿到高含金量的证书。为了达到这个目标,学生可以参加更高级别的比赛,参加学术活动训练营或找到有经验的老师进行指导。此外,学生还应该注重总结和反思,在实践中不断提升自己的快速思维和编程能力。

usaco学术活动真题

usaco参考书

【扫码免费领取】USACO真题+咨询报名事项+一对一备考规划!

整个备考过程中,除了学习编程知识和解题技巧,学生还需要注重训练和实践。通过参加学术活动和解题训练,学生可以不断提高自己的表现和应对各种挑战的能力。