小白的秋招記錄——機試編程題(百度)

題目看起來特別簡單,十分鐘搞定兩道題代碼部門,然後剩下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

 

感人。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章