小白的秋招记录——机试编程题(百度)

题目看起来特别简单,十分钟搞定两道题代码部门,然后剩下50分钟调bug。。。。几乎遍历了所有的方法

但是无论怎么改第一题都只能A 36% ,第二题只能A 9%。笔试结束后问了身边的小伙伴,大都和我相似的情况。

顺便 有没有全A的小伙伴,求思路。

 

1、定点射门

时间限制:C/C++语言 1000MS;其他语言 3000MS

内存限制:C/C++语言 65536KB;其他语言 589824KB

题目描述:

在一档综艺节目中,有一个定点射门的游戏,在一条直线上有n个球门区域,这些球门的大小并不一样,用形如“a b”的方式表示,球门区域是从a坐标到b坐标的区域,另外在距离球门所在直线不远处的平行轴处,有若干个摆放好的足球,由于参加综艺的人并不是专业运动员,因此只会将该直线a坐标处的足球踢到另一条直线的a坐标处。

球门可能会有重合,对于任何一个重合的位置,你可以任选一个球门踢入。只要有一个球门内有进球,就可以加一分,这位选手最多可以得多少分。

一颗球不可以在两个球门中重复计数,门柱等问题忽略不计。

输入

输入第一行仅包含两个正整数n,m,表示有n个球门,m颗球。
接下来n行,每行有两个正整数a,b,表示球门的范围。(1<=a,b<=1000)
再接下来m行,每行有一个正整数x,表示球所在的坐标。(1<=x<=1000)

输出

输出包含一个正整数,表示最大得分

样例输入

3 3
1 5
2 6
7 8
2
4
8

样例输出

3

 

 代码:

import sys
n, m = map(int, sys.stdin.readline().strip().split())
hash_set = [0] * 1001
res = 0

for i in range(n):
    a, b = map(int, sys.stdin.readline().strip().split())
    for j in range(a, b+1):
        hash_set[j] = 1

for i in range(m):
    x = int(sys.stdin.readline().strip())
    if hash_set[x]:
        res += 1

print res

 

2、跳跃递推

时间限制:C/C++语言 1000MS;其他语言 3000MS

内存限制:C/C++语言 65536KB;其他语言 589824KB

题目描述:

很多数列都是递推形成的,现在给出一个序列的前四项,a[1],a[2],a[3],a[4],已知递推式是a[n]=a[n-1]+a[n-3]+a[n-4]。请你求出第n项的值。

输入

输入仅一行,包含4个正整数a[1],a[2],a[3],a[4]及n。

输出

输出仅包含一个正整数,即a[n],但是由于这个数可能非常大,所以请输出答案对10^9+7取模的结果。

样例输入

1 2 3 4 20

样例输出

9790

 

代码:

import sys

line = sys.stdin.readline().strip()
a, b, c, d, n = map(int, line.split())

for i in range(4, n):
    temp = (a + b + d)%1000000007
    a = b
    b = c
    c = d
    d = temp

#import pdb;pdb.set_trace()

print temp

 

感人。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值