百度3月7笔试题求解

就是黑白魔法这题,输入一个n代表n次魔法,之后输入n个非零数字代表每次释放的魔法,其中对于一段连续释放魔法累乘结果若为负数就是一次黑魔法,反之是一次白魔法,问最后一共能释放多少种不同的黑魔法以及白魔法,不同指的就是不同段连续释放组成的结果。这题难道不是就对每一个子串求一次累乘就行了嘛,还有啥特殊情况呢,只过了27%。

以下是核心代码块,m就是那一组释放的魔法的一个list,a代表黑魔法的次数,b代表白魔法的次数。

for i in range(len(m)):
    t = 1
    for j in range(i, len(m)):
        t *= m[j]
        if t < 0:
            a += 1
        else:
            b += 1

#笔试##百度#
全部评论
我AC了,就整个长度n的列表,每位记录以当前位为end的白魔法和黑魔法数。假设list[n] = [white,black],那我们读到n+1位的时候,如果是正数,那黑魔法的方案数会多list[n][1]种,白魔法的方案数会多list[n][0]+1种(因为会多只有第n+1本身的这种情况),是负数的话反过来,遍历一次以后把列表每个元素的[0]和[1]相加输出就ok啦,dp问题
3 回复 分享
发布于 2023-03-07 23:14 日本
可以看下我的题解
2 回复 分享
发布于 2023-03-07 22:03 安徽
我用的回溯,只有82%
2 回复 分享
发布于 2023-03-07 21:03 四川
n = int(input()) num = list(map(int, input().split())) l = len(num) count = [0, 0] # 存储白,黑的个数 if num[0] > 0: count[0] = 1 else: count[1] = 1 res_0, res_1 = count[0], count[1] for i in range(1, l): if num[i] > 0: count[0], count[1] = count[0] + 1, count[1] else: count[0], count[1] = count[1], count[0] +1 res_0 += count[0] res_1 += count[1] print(res_1, res_0) ac了,可以看作指针滑动,以当前指针所指元素为尾考虑的话,很类似双指针滑动那道题。 就出现了状态转移公式,对应在代码里,自己看吧
1 回复 分享
发布于 2023-03-09 01:01 湖北
借楼问有没有做A卷的佬,其他踢没A但至少有思路,第一题子序列拆分一点思路都没😥
1 回复 分享
发布于 2023-03-07 21:29 浙江
超时不会提醒吗
1 回复 分享
发布于 2023-03-07 20:59 上海
可以考虑二维dp,边算边保存应该就可以了.
点赞 回复 分享
发布于 2023-03-14 12:51 北京
百度的笔试是在牛客网上的吗?可以用本地ide吗
点赞 回复 分享
发布于 2023-03-12 14:01 黑龙江
请问笔试一共是三道编程题吗?
点赞 回复 分享
发布于 2023-03-10 15:38 四川
楼主,这是春招吗
点赞 回复 分享
发布于 2023-03-09 10:11 北京
黑魔法是DP,难度都不高
点赞 回复 分享
发布于 2023-03-08 16:52 山西
这样一直乘是不是会爆了。。
点赞 回复 分享
发布于 2023-03-07 23:59 日本
m[i] 的范围在-10^9到10^9之间,如果你每次都乘m[i]那你的t值会非常巨大
点赞 回复 分享
发布于 2023-03-07 23:28 德国
动态规划。 l = [1,-1,1,-1,1] 一维转移方程:dp[i] = l[i]*dp[i-1], dp[i]表示用i个连续时的乘积;两次循环,小循环从后面开始,每大循环计算一次当前dp中正负数,最后求和; 二维转移方差:dp[i][j] = l[i]*dp[i-1][j-1],dp[i][j]表示每次l中第i位置的数和其余与之连续的j-1个数的乘积,最后直接计算二维矩阵的正负个数; 27%可能是超时,82%应该是没用1,-1代替,导致数据超了
点赞 回复 分享
发布于 2023-03-07 22:35 四川
怀疑是不是python语言有问题啊On了只过27%
点赞 回复 分享
发布于 2023-03-07 21:25 北京
蹲,用的dp复杂度On, 也只过27
点赞 回复 分享
发布于 2023-03-07 21:09 江西
欸我去你们一说超时那还真是,问题是他也不提醒我也没想到是超时了
点赞 回复 分享
发布于 2023-03-07 21:07 河北
你这肯定超时啊,动态规划不就行了
点赞 回复 分享
发布于 2023-03-07 21:04 北京
(不同指的就是不同段连续释放组成的结果) 这句话应该代表最后释放的魔法序列不同 比如 [-1, 1, -1] 可以分成 一、[-1] [1, -1] 魔法序列就是(黑, 黑) 二、[-1, 1] [-1] 魔法序列也是(黑,黑) 这两种算作一种方案数
点赞 回复 分享
发布于 2023-03-07 21:03 河南
第一超时,第二t=m[i]
点赞 回复 分享
发布于 2023-03-07 21:03 河南

相关推荐

繁华的街道两旁,湿漉漉的下午,两个青涩的脸庞互相张望。宽大卫衣下娇小的她,向我奔来。不约而同的卫衣,斯文的半框眼镜掩饰着一个穷臭屌丝气息。这是我和我牛爱网第一死忠粉兼专属女嘉宾最初的见面。火速恋爱,但是没有所谓的快节奏,相识半年,还是一样的热恋。吃着肉夹馍坐过西安的小三轮洱海边自行车的气球胖吃着她最喜欢的酸酸水果和小乳扇在南山某店爷爷穿孙子衣服,摸肥猫就算我在忙也要抽出时间陪她去吃他喜欢的漂亮饭生活总是平凡,但平凡不平淡还记得见面第一件事儿:“我去上个厕所。”现在早上第一件事儿:“拉*”第一次上我车的她:“我可以坐副驾吗?”现在的她:“老子把jio翘到上面得得挡到你后视镜。”这小孩,虽然花了我...
Stan_蹒跚者:确很厉害,但是有一个小问题:谁问你了?我的意思是,谁在意?我告诉你,根本没人问你,在我们之中0人问了你,我把所有问你的人都请来 party 了,到场人数是0个人,誰问你了?WHO ASKED?谁问汝矣?誰があなたに聞きましたか?누가 물어봤어?我爬上了珠穆朗玛峰也没找到谁问你了,我刚刚潜入了世界上最大的射电望远镜也没开到那个问你的人的盒,在找到谁问你之前我连癌症的解药都发明了出来,我开了最大距离渲染也没找到谁问你了我活在这个被辐射蹂躏了多年的破碎世界的坟墓里目睹全球核战争把人类文明毁灭也没见到谁问你了
点赞 评论 收藏
分享
04-08 10:36
已编辑
华南理工大学 C++
点赞 评论 收藏
分享
FieldMatching:看成了猪头顾问,不好意思
点赞 评论 收藏
分享
评论
11
15
分享

创作者周榜

更多
牛客网
牛客企业服务