百度笔试 1019

第一题

题目描述:

我们可能听过“短板效应”这一说法:一只水桶能盛多少水,并不取决于最长的那块木板,而是取决于最短的那块木板。

小明在完成某个小组任务时,也出现了类似的情况。小明的班级有n个人排成一行,每个人有一个能力值aᵢ,每连续i个人都在一个大小为i的组里,一个人会在很多个组。例如1,2,3,4,5,五个人依次排成一行,有1,2,3;2,3,4;3,4,5这三个大小为3的组,有1,2,3,4;2,3,4,5这两个大小为4的组。一个组的能力值为组里所有人能力值的最小值,小明作为班长想对于所有1≤x≤n求出所有大小为x的组的能力值的最大值为多少。

 

输入描述:

第一行一个正整数n,表示班级中的人数。(1≤n≤100000)

接下来一行n个整数,表示a₁,a₂……aₙ,依次表示每个人的能力值。(1≤aᵢ≤10⁹)

 

输出描述:

输出一行n个整数,分别表示大小为1,2,……,n的所有组能力值最大值为多少。

 

样例输入:

6

4 5 3 1 3 4

样例输出: 5 4 3 1 1 1

n = int(input())
a = list(map(int, input().split()))

left = [-1] * n
right = [n] * n

stack = []
# 找左边第一个比它小的元素
for i in range(n):
    while stack and a[stack[-1]] >= a[i]:
        stack.pop()
    left[i] = stack[-1] if stack else -1
    stack.append(i)

stack = []
# 找右边第一个比它小的元素
for i in range(n-1, -1, -1):
    while stack and a[stack[-1]] >= a[i]:
        stack.pop()
    right[i] = stack[-1] if stack else n
    stack.append(i)

res = [0] * (n+1)

for i in range(n):
    length = right[i] - left[i] - 1
    res[length] = max(res[length], a[i])

# 填补答案
for i in range(n-1, 0, -1):
    res[i] = max(res[i], res[i+1])

print(' '.join(map(str, res[1:])))

第二题

公共前后缀

题目描述

有两个小朋友玩词语接龙游戏,他们只认识两个字符串。若小明先说出长度为n的字符串s,小红只能说长度为m的字符串t(相反的,若小明先说出t,小红只能说s)。

游戏中定义小红的得分为k,其中k是最大的满足“小明所说字符串的后k位”和“小红所说字符串的前k位”是一样的这一前提的数字。例如小明说s、小红说t时,小红的得分即为s[n-k+1]~s[n]==t[1]~t[k]

小明想知道他应该说哪个字符串,才能让小红的得分最少,请你输出最少的得分即可。

输入描述

两行,每行一个仅包含小写字母的字符串,代表小明和小红当前认识的两个字符串。

1≤字符串长度≤1000

输出描述

输出小红可能获得的最少得分。

样例输入

ababab

babaa

样例输出

1

def prefix_function(s):
    n = len(s)
    pi = [0] * n
    for i in range(1, n):
        j = pi[i - 1]
        while j > 0 and s[i] != s[j]:
            j = pi[j - 1]
        if s[i] == s[j]:
            j += 1
        pi[i] = j
    return pi

s = input().strip()
t = input().strip()

def overlap(a, b):
    combined = b + "#" + a
    pi = prefix_function(combined)
    return pi[-1]

k1 = overlap(s, t)
k2 = overlap(t, s)

print(min(k1, k2))

 

 

 

26秋招算法笔试 文章被收录于专栏

26秋招算法笔试

全部评论

相关推荐

2025-12-08 17:42
四川大学 产品运营
2025的失业大潮中,还有什么行业是有前景的?未来五年,十五五规划揭示了十大充满潜力的职业方向。对于即将步入职场的学生来说,了解这些趋势,能帮助你更好地规划未来。1. 新兴产业:抓住腾飞机遇国家将重点培育新能源、新材料、航空航天、低空经济等产业,并布局量子科技、脑机接口等未来领域。例如,低空经济预计创造大量岗位,从研发制造到运营服务都需要人才。2. 数字经济:与AI共同成长人工智能正在改变就业结构,催生如AI产品经理、人工智能工程师等新职业。与其担心被替代,不如学习如何运用AI工具,从事高附加值的创新工作。3. 服务领域:更精细、更专业服务业就业比例将持续提升。未来需要更多数字化服务、体验经济和社会服务类人才,例如用户体验设计师、健康管理师等。软硬技能结合将成为关键。4. 灵活就业:多元化选择灵活就业已覆盖超2亿人,包括内容创作、网约车、外卖等。政策也在逐步完善相关保障,这为追求平衡与自由的工作方式提供了可能。5. 跨境领域:走向全球随着对外开放深化,跨境电商等领域急需小语种、国际贸易及供应链管理人才。具备国际视野和跨文化沟通能力将成为重要优势。6. 田间创业:乡村有新机乡村振兴带来新机遇。“乡村CEO”、“农创客”等角色不断涌现,用专业知识和创新思维带动乡村发展,实现个人价值与收入提升。7. 文化产业:科技赋能创意“文化+科技”融合催生新业态,如AIGC动画制作、虚拟场景策划等。创意能力与数字技术结合,前景广阔。8. 老龄服务:关爱与专业并重面对老龄化社会,专业的养老护理、康复护理及老年情绪管理人才需求巨大。这是一个兼具社会意义和职业发展的领域。9. 绿色职业:共建可持续未来绿色低碳产业规模巨大,储能运维、绿色建筑、碳资产管理等方向人才紧缺。投身环保领域,既能成就事业,也能贡献价值。10. 区域机会:多点开花人才流动不再只聚焦一线城市。苏州、成都、武汉等新一线城市以及国家级区域发展战略地区,正成为新的就业热土。未来必备的五大能力无论选择哪个方向,持续培养以下能力至关重要:· 好奇心:主动关注新技术、新趋势· 自驱力:保持学习热情,自我提升· 人机协同:善于利用AI工具解决问题· 跨界整合:能够融合不同领域的知识· 终身学习:在不断变化中迭代自己的技能库时代的画卷正在展开,充满新的机遇。你对哪个领域感兴趣?欢迎点击下方,结合你的背景、爱好选择最适合你的行业。https://m.finsight.work/pages/activePage/general/index?pageCode=0F52EBAB
如果再来一次,你还会选择...
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
2025-12-07 20:55
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务