腾讯笔试题

请问红白花那个题
为什么爆超时啊?我是O(n)复杂度的


t,k = list(map(int,input().split()))
dp = [1] * (100000+1)
for i in range(k,100000+1):
    dp[i] = (dp[i-k] + dp[i-1])%(int(10e9+7))
    
for _ in range(t):
    a,b = list(map(int,input().split()))
    result = sum(dp[a:b+1])%(int(10e9+7))
    print(result)


------------------分割线--------------------
破案了,mod多了一个0
我真傻 真的
t,k = list(map(int,input().split()))
dp = [1] * (100000+1)
mod = int(1e9+7)
for i in range(k,100000+1):
    dp[i] = (dp[i-k] + dp[i-1] + mod)%mod
for i in range(1,100000+1):
    dp[i] += (dp[i-1]+mod)
    dp[i] = dp[i]%mod
for _ in range(t):
    a,b = list(map(int,input().split()))
    result = (dp[b]-dp[a-1]+mod)%mod
    print(result)


#腾讯##笔试题目#
全部评论
import sys if __name__ == "__main__":     T, K = map(int, sys.stdin.readline().strip().split())     lst = []     maxLen = 0     mod = 10 ** 9 + 7     for t in xrange(T):         line = map(int, sys.stdin.readline().strip().split())         lst.append(line)         maxLen = max(maxLen, line[-1])     l = [1 for _ in xrange(K)]     for i in xrange(K, maxLen + 1):         l.append(l[-1] + l[i-K])     for t in xrange(T):         a, b = lst[t]         print sum(l[a:b+1]) % mod 这个能100%
点赞 回复 分享
发布于 2019-09-01 22:54
楼主能否讲下思路捏~我用c++,python看起来有点吃力,感谢~~~
点赞 回复 分享
发布于 2019-09-02 10:43
能讲讲思路吗
点赞 回复 分享
发布于 2019-09-02 09:19
楼上17行,100%的代码,我感觉跟我的思路差不多呀,但是我就超时了,谁能给我分析分析为啥速度差这么多? # encoding: utf-8 import sys res_dict = {} max_key = 0 def search(length, k):   global max_key   res_dict[0] = 1   if max_key >= length:     return res_dict[length]   else:     start = max_key   start = max(1, start)   for length_tmp in range(start, length + 1):     res_dict[length_tmp] = res_dict[length_tmp-1]     if length_tmp - k >= 0:       res_dict[length_tmp] += res_dict[length_tmp-k]     res_dict[length_tmp] %= (1e9+7)   max_key = length   return res_dict[length] line = [int(val) for val in sys.stdin.readline().strip().split(' ')] t = line[0] k = line[1] for group_idx in range(t):   line = [int(val) for val in sys.stdin.readline().strip().split(' ')]   a = line[0]   b = line[1]   if k == 0:     print 1     continue   count = 0   for length in range(a, b+1):     count += search(length, k)   print int(count % (1e9+7))
点赞 回复 分享
发布于 2019-09-02 00:12
sum这一步没必要,直接dp保存和,然后减起点就是区间了,然后最后一步再取模,反正python无现长
点赞 回复 分享
发布于 2019-09-01 22:51
这题要取模的吗?题目好像没说?
点赞 回复 分享
发布于 2019-09-01 22:40
感觉这题应该是有个推导出来的公式,可以只需要On时间内计算出来
点赞 回复 分享
发布于 2019-09-01 22:39
result = sum(dp[a:b+1])%(int(10e9+7)) 加上这里就是n平方了
点赞 回复 分享
发布于 2019-09-01 22:32

相关推荐

昨天 11:04
已编辑
北方民族大学 前端工程师
“无名小卒还是名扬天下?”我知道很多人都不觉得我能走到今天这一步,当然,也包括我自己。在我的人生里,有两部作品刻下了最深的印记:《斗破苍穹》与《龙族》。这两部书总被人拿来对照:一边是萧炎的桀骜轻狂,一边是路明非的怯懦衰颓。有人说,天蚕土豆没见过魂天帝,但江南见过真凯撒。我时常觉得自己就是那个衰小孩路明非,可路明非可以开挂,我不可以;我也无数次幻想过能拥有萧炎那般年少轻狂的人生,可我没有他与生俱来的逆天天赋。我只是个平庸的普通人,一个看过《斗破苍穹》却开不了挂的路明非,只能一步一步往上爬。从我下定决心找实习的那一刻起,我就给自己定下了目标:我一定要为字节跳动卖命.jpg。萧炎有他的三年之约,我有我的两年半之约(其实是一年半)。2024.11.20,科大讯飞的第一封实习offer落进邮箱,我迈出了这场奔赴的第一步。2025.8.18,放弃百度转正的安稳机会,转身走进前路未卜的不确定里。我很感谢我在百度的mentor,是她从茫茫人海选中了我,给了我大厂实习的机会。即便那段时间我状态差、产出不理想,她依旧愿意认可我、希望我留下转正。2025.11.14,我选择走进字节跳动,以实习生的身份重新出发,放下过往,清零重来,只为奔赴心之所向。2026.3.25 - 3.27,三天速通上海飞书,斩获Special Offer。被告知面试通过的那一刻,我的内心无比平静,就像这个offer本就该属于我。不是侥幸,是应得的。这一路,有人看轻过我的出身,不相信我能走到这里;也有人在我看不见前路的时候,替我举过灯。没有他们的鼓励与支撑,就没有今天站在这里的我。我看到了自强不息的激荡,那是一个双非的伟大乐章!我是雨夜迈巴赫,我要开启属于我的新篇章了。
在看牛客的本杰明很勇...:真心祝贺l总 我永远的偶像 我滴神
春招至今,你收到几个面试...
点赞 评论 收藏
分享
评论
点赞
8
分享

创作者周榜

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