USACO 2024年1月铜组试题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
USACO2024J ANUARY C ONTEST,B RONZE P ROBLEM 1.M AJORITY O PINION Farmer John 有一项重要的任务——弄清楚要为他的奶牛们购买什么类型的干草。
Farmer John的N头奶牛(2≤N≤105)编号为1到N,每头奶牛喜欢恰好一种类型的干草hi (1≤hi≤N)。
他希望他的所有奶牛都喜欢同一种干草。
为了实现这一目标,Farmer John 可以主持焦点小组访谈。
一次焦点小组访谈为让编号从i 到j的连续范围内的所有奶牛聚集在一起参加一次访谈。
如果有一种干草是小组中超过一半的奶牛喜欢的,则此次焦点小组访谈结束后,所有奶牛最终都会喜欢这种干草。
如果不存在这种类型的干草,那么奶牛们不会改变她们喜欢的干草类型。
例如,在由16头奶牛组成的焦点小组访谈中,需要有其中9头或更多的奶牛具有相同的干草喜好,才能使其余奶牛改变其喜好以与之一致。
Farmer John 想知道哪些类型的干草有可能变为同时受到所有奶牛的喜爱。
他一次只能主持一个焦点小组访谈,但为了使所有奶牛都喜欢同一类型的干草,他可以根据需要任意多次地主持焦点小组访谈。
输入格式:
输入的第一行包含一个整数T,为独立的测试用例的数量(1≤T≤10)。
每一个测试用例的第一行包含N。
第二行包含N个整数,为奶牛们喜爱的干草类型hi。
输入保证所有测试用例的N之和不超过2⋅105。
输出格式:
输出T行,对于每个测试用例输出一行。
如果可能使所有奶牛同时喜欢同一种干草,则以升序输出所有可能的此类干草的类型,否则输出−1。
在同一行内输出一列整数时,相邻的数用空格分隔,并确保行末没有多余空格。
输入样例:
5
5
1 2 2 2 3
6
1 2 3 1 2 3
6
1 1 1
2 2 2
3
3 2 3
2
2 1
输出样例:
2
-1
1 2
3
-1
在输入样例中,有 5 个测试用例。
在第一个测试用例中,仅可能使所有奶牛喜欢种类 2。
FJ 可以通过主持一次所有奶牛的焦点小组访谈达到这一目的。
在第二个测试用例中,可以证明没有奶牛会改变她们喜爱的干草种类。
在第三个测试用例中,有可能使所有奶牛喜欢种类 1,可以通过主持三次焦点小组访谈达到这一目的——首先使奶牛1到4进行一次焦点小组访谈,随后使奶牛1到5进行一次焦点小组访谈,随后使奶牛1 到6进行一次焦点小组访谈。
以类似的逻辑,依次操作奶牛3到6,随后是奶牛2到6,随后是奶牛1到6,我们可以使所有奶牛喜欢种类 2。
在第四个测试用例中,有可能使所有奶牛喜欢种类 3,可以通过主持一次所有奶牛的焦点小组访谈达到这一目的。
在第五个测试用例中,可以证明没有奶牛会改变她们喜爱的干草种类。
测试点性质:
•测试点 2:N=2。
•测试点 3-4:N≤50。
•测试点 5-6:对于所有的1≤i≤N−1,有hi≤hi+1。
•测试点 7-15:没有额外限制。
USACO2024J ANUARY C ONTEST,B RONZE P ROBLEM 2.C ANNONBALL
Bessie 已经精通了变成炮弹并沿着长度为N(1≤N≤105)的数轴弹跳的艺术,数轴上的位置从左到右编号为1,2,…,N。
她从某个整数位置S(1≤S≤N)开始,以1的起始能量向右弹跳。
如果 Bessie的能量为k,则她将弹跳至距当前位置向前距离k处进行下一次弹跳。
从1到N的每个整数位置上均有炮击目标或跳板。
每个炮击目标和跳板都有一个在0到N
范围内的整数值。
一个数值为v的跳板会使 Bessie 的能量增加v并反转她的方向。
一个数值为v的炮击目标会当着陆时能量不小于v时被击破。
着陆在炮击目标上不会改变 Bessie 的能量和方向。
被击破的炮击目标将保持击破状态,Bessie 依然可以该炮击目标上弹跳,同样不会改变能量和方向。
如果 Bessie 弹跳无限长的时间或直到她离开数轴,她会击破多少个炮击目标?
如果 Bessie 开始时位于一个她可以击破的炮击目标,她会立刻这样做。
类似地,如果Bessie 开始时位于一个跳板,跳板的效果将在她第一次跳跃之前生效。
输入格式:
输入的第一行包含N和S,其中N为数轴的长度,S为Bessie的起始位置。
以下N行描述了每一个位置。
其中第i行包含整数qi和vi,如果位置i上有一个跳板则qi=0,位置i上有一个炮击目标则qi=1,vi是位置i上的跳板或炮击目标的数值。
输出格式:
输出一个整数,为将被击破的炮击目标数量。
输入样例:
5 2
0 1
1 1
1 2
0 1
1 1
输出样例:
1
Bessie 从坐标2开始,这是一个数值为1的炮击目标,所以她立刻击破了它。
然后她弹跳至坐标3,这是一个数值为2的炮击目标,所以她无法击破它。
她继续弹跳至坐标4,这改变了她的方向并将她的能量增加了1,达到2。
她跳回至坐标2,这是一个已经被击破的炮
击目标,所以她继续弹跳。
此时,她弹跳至了坐标0,因此她停了下来。
她击破了恰好一个炮击目标,位于坐标2。
输入样例:
6 4
0 3
1 1
1 2
1 1
0 1
1 1
输出样例:
3
Bessie 经过的路径为4→5→3→1→6,下一次弹跳将会使她离开数轴(11)。
她依次击破了炮击目标4,3,6。
测试点性质:
•测试点 3-5:N≤100。
•测试点 6-10:N≤1000。
•测试点 11-20:没有额外限制。
USACO2024J ANUARY C ONTEST,B RONZE P ROBLEM 3.B ALANCING B ACTERIA
Farmer John 有N(1≤N≤2×105)块草地排成一行,其中草地i的细菌水平与健康草的细菌水平相差ai(-1015≤ai≤1015)。
例如,如果ai=-3,则草地i的细菌水平比正常水平低 3,需要额外添加恰好3个单位的细菌才能将其提高到被认为是健康的程度。
Farmer John 想要确保每一块草地都被修复至健康的细菌水平。
方便的是,他有两种品牌的农药可以喷洒在他的田地里,一种可以添加细菌,另一种可以去除细菌。
当 Farmer John 喷洒任一类型的农药时,他站在草地N(最右边的草地)并为他的喷雾器选择功率等级L(1≤L≤N)。
喷雾器对靠近 Farmer John 的草地效果最大,随着距离增加效果逐渐减弱。
如果 Farmer John 选择添加细菌的农药,则L单位的细菌将被添加至草地N,L-1单位添加至草地N-1,L-2单位添加至草地N-2,以此类推。
草地1…N−L不会得到任何细菌,因为喷雾器设置的功率不足以到达它们。
类似地,如果 Farmer John 选择去除细菌的农药,则L单位的细菌将被从草地N去除,L-1单位被从草地N-1去除,以此类推。
同样,草地1…N-L将不受影响。
求 Farmer John 使用喷雾器的最少次数,使得每块草地都具有健康草的推荐细菌值。
输入保证答案不超过109。
注意这个问题涉及到的整数可能需要使用 64 位整数型(例如,C/C++ 中的 "long long")。
输入格式:
输入的第一行包含N。
第二行包含N个整数a1…aN,为每块草地的初始细菌水平。
输出格式:
输出一个整数,为使每块草地都具有健康草的推荐的细菌值所需使用喷雾器的最少次数。
输入样例:
2
-1 3
输出样例:
6
使用去除细菌的农药,功率等级为 1,使用五次。
然后使用添加细菌的农药,功率等级为2,使用一次。
输入样例:
5
1 3 -
2 -7 5
输出样例:
26
测试点性质:
•测试点 3-5:N≤103,答案不超过103。
•测试点 6-10:N≤103。
•测试点 11-15:没有额外限制。