来了!刚刚过去的USACO银组,铜组真题全中文版!

这篇博客介绍了USACO竞赛的铜组和银组算法题目,包括Triangles、Mad Scientist和Swapity Swap等。题目涉及字符串转换、三角形面积计算和谷仓时钟同步问题,需要运用到C++编程和算法知识。

铜组真题

Problem 1. Triangles

时间限制: 1 Sec 内存限制: 128 MB

题目描述

农场主约翰想为他的奶牛建造一个三角形的牧场。
牧场有N(3≤N≤100)个围栏立柱在不同的点(X1,Y1)…(Xn,Yn)在他农场的2D地图上。只要三角形的一条边平行于x轴,另一条边平行于y轴,他就可以选择其中的三个顶点来形成三角形牧场的三条边。
最大牧场面积是多少?

输入

第一行包含N。
接下来的N行中的每一行都包含两个整数Xi和Yi,都在?104…104的范围内,描述围栏柱的位置。

输出

由于面积不一定是整数,所以取两倍面积。

样例输入

4
0 0
0 1
1 0
1 2

样例输出

2

示例解释
栅栏立柱(0,0)、(1,0)和(1,2)表示区域1的三角形,答案是2*1=2。

Problem 2. Mad Scientist

时间限制: 1 Sec 内存限制: 128 MB

题目描述
有两个字符串A和B,只包含两种字符H和G,长度为N。(1≤N≤1000)
现在有一台字符串转换机,每次可以将任意字符串的子串进行转换,H变为G,G变为H。
现在请问,将字符串B转换成字符串A,最少使用多少次机器

输入

第一行N。
第二行字符串A。
第三行字符串B。

输出

将字符串B转换成字符串A,最少使用多少次机器。

样例输入

7
GHHHGHH
HHGGGHH

样例输出

2

示例解释

第一次只转换字符串B的第一个字符的子字符串,将字符串B转换为GHGGGHH。接下来,他可以转换由第三个和第四个字符组成的子字符串,得到字符串A。当然,还有其他组合也可以得到字符串A.

Problem 3. Swapity Swap

时间限制: 1 Sec 内存限制: 128 MB

题目描述

农夫约翰的N头奶牛排成一队。从左边起的第i头奶牛的标签是i。(1≤N≤100)
农夫约翰想出了一套新的奶牛晨练计划。他告诉奶牛精确地重复下面的2步过程K(1≤K≤109)次:
(1)将位置A1…A2之间的奶牛顺序颠倒。
(2)将位置B1…B2之间的奶牛顺序颠倒。
在奶牛恰好重复此过程K次之后,输出从左到右的奶牛标签。(注意区分位置和标签)

输入

第一行包含N和K。
第二行A1和A2,第三行B1和B2,这四个整数都在1…N范围内,其中A1<A2,B1<B2。

输出

输出i行,重复K次从左到右的奶牛编号。

样例输入

7 2
2 5
3 7

样例输出

1
2
4
3
5
7
6

示例说明

最初,奶牛的标签顺序是从左到右[1,2,3,4,5,6,7]。

执行第一次:
第一步,位置2~5的奶牛颠倒顺序,变为[1,5,4,3,2,6,7]。
第二步,位置3~7的奶牛颠倒顺序,变为[1,5,7,6,2,3,4]。

执行第二次:
第一步,位置2~5的奶牛颠倒顺序,变为[1,2,6,7,5,3,4]。
第二步,位置3~7的奶牛颠倒顺序,变为[1,2,4,3,5,7,6]。

银组真题

Problem 1. Swapity Swap(内存区别,注意到了吗?)

时间限制: 1 Sec 内存限制: 128 MB

题目描述

农夫约翰的N头奶牛排成一队。从左边起的第i头奶牛的标签是i。(1≤N≤105)
农夫约翰想出了一套新的奶牛晨练计划。他给了奶牛M对整数(L1,R1)…(LM,RM),其中1≤M≤100。然后,他告诉奶牛精确地重复下面的M步过程K(1≤K≤109)次:
对于整数(Li,Ri):当前位于位置Li~Ri的奶牛的顺序从左到右颠倒了它们的顺序。
在奶牛恰好重复此过程K次之后,输出从左到右的奶牛标签。(注意区分位置和标签)

输入

第一行包含N、M和K。接下来M行包含Li和Ri,这两个整数都在1…N范围内,其中Li<Ri。

输出

输出i行,重复K次从左到右的奶牛编号。

样例输入
7 2 2
2 5
3 7

样例输出
1
2
4
3
5
7
6

示例说明

最初,奶牛的标签顺序是从左到右[1,2,3,4,5,6,7]。

执行第一次:
第一步,位置2~5的奶牛颠倒顺序,变为[1,5,4,3,2,6,7]。
第二步,位置3~7的奶牛颠倒顺序,变为[1,5,7,6,2,3,4]。

执行第二次:
第一步,位置2~5的奶牛颠倒顺序,变为[1,2,6,7,5,3,4]。
第二步,位置3~7的奶牛颠倒顺序,变为[1,2,4,3,5,7,6]。

数据范围

测试用例2满足N=K=100。
测试用例3-5满足K≤103.。
测试用例6-10不满足任何附加约束。

Problem 2. Triangles(内存区别,注意到了吗?)

时间限制: 2 Sec 内存限制: 256 MB

题目描述

农民约翰想为他的奶牛建造一个三角形的牧场。
牧场有N(3≤N≤105)个围栏立柱在不同的点(X1,Y1)…(Xn,Yn)在他农场的2D地图上。只要三角形的一条边平行于x轴,另一条边平行于y轴,他就可以选择其中的三条边来形成三角形牧场的顶点。
问所有可能形成的牧场面积之和是多少?

输入

第一行包含N。
接下来的N行中的每一行都包含两个整数Xi和Yi,都在−104…104的范围内,描述围栏柱的位置。

输出

由于面积之和不一定是整数并且可以非常大,所以当取两倍面积之的和模109+7时输出余数。

样例输入

4
0 0
0 1
1 0
1 2

样例输出

3

示例解释

栅栏立柱(0,0)、(1,0)和(1,2)表示区域1的三角形,而(0,0)、(1,0)和(0,1)表示区域0.5的三角形。因此,答案是2⋅(1+0.5)=3。

数据范围

测试用例2满足N=200。
测试用例3-4满足N≤5000。
测试用例5-10不满足任何附加约束。

Problem 3. Clock Tree

时间限制: 2 Sec 内存限制: 256 MB

题目描述

农夫约翰的新谷仓有一个真正奇怪的设计:它由N房间(2≤N≤2500)、方便编号1…N,和N−1走廊。每条走廊连接一对房间,这样就可以沿着走廊从任何房间走到任何其他房间。
谷仓里的每个房间墙上都有一个带有标准整数的圆形钟:1…12。然而,这些时钟只有一个指针,它总是直接指向时钟表面上的一个整数(它从不指向两个整数之间)。
母牛贝茜想让谷仓里的所有时钟同步,所以时钟都指向整数12。然而,她有点头脑简单,她会在谷仓里走来走去,每次进入一个房间,会将房间的时钟向前移动一个位置。例如,如果时钟指向5,现在它将指向6,如果时钟指向12,现在它将指向1。如果贝西多次进入同一个房间,她每次进入该房间时都会提前该时钟。
请确定贝茜可以开始的房间数目,这样她就可以把所有的时钟都调到12点。注意,贝茜不会在出发点的房间里提前时钟,但只要她重新进入那个房间,她才会把时钟调整前一个位置。时钟不会自行前进;只有当贝茜进入房间时,钟才会提前。此外,一旦贝西进入走廊,她就必须从另一端离开(不能穿过部分走廊,然后倒退回到同一房间)。

输入

输入的第一行包含N。下一行包含N个整数,每个在范围内1…12指定每个房间的初始时钟设置。接下来N−1行,每行用两个整数描述一个走廊,给出走廊连接的房间号。每个在范围内1…N。

输出

打印出贝茜可以开始的房间数目,这样她就可以把所有的时钟都调到12点。

样例输入

4
11 10 11 11
1 2
2 3
2 4

样例输出

1

示例解释

在本例中,可以将所有时钟设为12,当且仅当她从第2房间开始(例如,移动顺序为1、2、3、2、4)。

数据范围

测试用例2-7满足N≤100.
测试用例8-15不满足额外的约束。

太简单?金组与铂金组真题?

别忙,尽情期待……(后面会文章更新哟)
答案时间:约一周之后

这些题,你怎么做?在下面的留言板上写下你的思路吧!

题解讨论

往下看——

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值