USACO计算机竞赛12月考题解析出炉!(铜/银级别)

时间:2024-01-17 11:18:26  作者:网络 来源:网络

12月USACO铜级题👇

 

农夫约翰的奶牛很爱吃甜食,它们特别喜欢吃甘蔗糖!FJ有N头牛,每头牛都有一定的初始身高,他想喂它们M每根也有不同高度(1≤N,M≤2·10^5)。

按照它们在输入中的顺序,FJ计划将甘蔗糖一根接一根地喂给奶牛。为了给奶牛喂甘蔗糖,他会把甘蔗糖挂起来,这样甘蔗糖一开始就刚好碰到地面。然后,奶牛将按照输入的顺序一头接一头地排队,走到甘蔗糖前,每头牛都吃到自己的高度(因为它们不能再高了)。即使在奶牛吃掉糖果棒的底部后,糖果棒也会悬挂在最初设置的位置,不会下降到地面。如果甘蔗的底部已经超过奶牛的高度,那么奶牛在轮到它的时候可能什么都不吃。轮到每头牛后,奶牛的身高会根据它们吃了多少单位的甘蔗糖而增加,农民约翰挂上下一根甘蔗糖,奶牛再次重复这个过程(第一头牛再次成为第一个开始吃下一根拐杖糖的人)。

 

向下滑动查看全部题目内容

 

【文末领取完整真题及解析】

 

INPUT FORMAT(pipe stdin):

第一行包含N和M。

 

下一行包含N的初始高度奶牛,每头都在[1-10^9]范围内。

 

下一行包含M的高度糖果手杖,每根在[1-10^9]范围内。

OUTPUT FORMAT (pipe stdout):

每个N的最终高度奶牛在不同的线上。

 

请注意,此问题中涉及的大尺寸整数可能需要使用64位整数数据类型(例如,C/C++中的“long-long”)。

样本输入:

3 2

3 2 5

6 1

样本输出:

7

2

7

 

 

第一根甘蔗是6根单位高。

 

第一头牛吃掉第一根甘蔗糖的部分,直到高度3之后,第一根甘蔗糖的剩余部分占据高度[3,6]。

 

第二头牛不够高,吃不下第一根甘蔗糖的任何剩余部分。

 

第三头牛多吃两个单位的第一根甘蔗糖。第一根甘蔗糖的剩余部分,占据高度[5,6],不吃。

 

接下来,每头奶牛的生长量与它的进食量相等,因此奶牛的高度变为[3+3,2+0,5+2]=[6,2,7]。

 

第二根甘蔗是1根一个单位高,第一头牛吃掉了所有的。

范围:

输入2-10:N,M≤10^3

 

输入11-14:无其他约束。

 

🔴犀牛解析✍

图片

【这个题是个有意思的暴力问题】

🔵考虑一个子问题:
一个数初始是1,每一次操作是让它乘2,要求这个数小于等于n,求最多能操作多少次
🔵这个问题的答案比较显然是log2n次

🔵那考虑当前的问题,考虑第一头牛,如果牛比甘蔗矮,那么它吃完甘蔗后高度乘22;如果牛比甘蔗高,此轮吃甘蔗结束。

🔵所以这一题直接暴力模拟做到甘蔗被吃完复杂度就是对的。
 
时间复杂度:O(nlog2n)
知识点:暴力,时间复杂度分析

 

 

领取剩余题目

可扫码添加好友微信

👇👇👇

USACO竞赛,USACO培训班,USACO竞赛辅导,USACO计算机竞赛,

微信号|X-NEW-PI

👈获取USACO真题

以及后续备考建议

USACO竞赛,USACO培训班,USACO竞赛辅导,USACO计算机竞赛,

USACO竞赛,USACO培训班,USACO竞赛辅导,USACO计算机竞赛,

关键字:USACO竞赛,USACO培训班,USACO竞赛辅导,USACO计算机竞赛,

推荐资讯
Contact Us