【筆試代碼題記錄】20190908-0913 愛奇藝/搜狗/58同城/

2019.9.8 愛奇藝勸退題

【牛客大佬全AC代碼】

1. 排列計數

在這裏插入圖片描述
考完試才知道是原題,leetcode903

n = int(input())
data = [int(x) for x in input().split()]
dp = [1 for _ in range(len(data)+1)]
for i in data:
    if i==1:
        dp.pop(0)
        for j in range(len(dp)-2,-1,-1):
            dp[j]+=dp[j+1]
        #print(dp)
    else:
        dp.pop()
        for j in range(1,len(dp)):
            dp[j]+=dp[j-1]
        #print(dp)
mo = 1000000007
print(dp[0]%mo)

2. 紅藍球

在這裏插入圖片描述
解法:動態規劃,dp[i][j]表示i個紅球和j個藍球A的獲勝概率.如果i=0,dp[i][j]=0.如果j=0,dp[i][j]=1.否則的話dp[i][j]由下列步驟求得:
dp[i][j]+=i/(i+j);//表示A直接取得紅球的概率
如果j=1,那麼dp[i][j]+=0.A取藍球之後,B肯定獲勝
如果j=2,dp[i][j]+=j/(i+j)(j-1)/(i+j-1)dp[i-1][j-2];j/(i+j)是A取藍球的概率,在A取藍球的基礎上B再取藍球A纔有獲勝機會,所以(j-1)/(i+j-1)表示B再取藍球的概率,然後C只能從紅球選一個,在ABC選一輪後,A的獲勝概率就要加上dp[i-1][j-2],所以A獲勝的概率爲j/(i+j)(j-1)/(i+j-1)dp[i-1][j-2];
如果j>2,dp[i][j]+=j/(i+j)
(j-1)/(i+j-1)
(i/(i+j-2)*dp[i-1][j-2]+(j-2)/(i+j-2)*dp[i][j-3]);i/(i+j-2)*dp[i-1][j-2]+(j-2)/(i+j-2)*dp[i][j-3]表示A從藍球選一個,B從藍球選一個後,C分別從紅球藍球取出一個的A的獲勝概率.

tmp = input().split()
m,n=int(tmp[0]),int(tmp[1])
timesA = (m+n+1)//3
al = (m+n)
re = 0
pA = 1
cur = 1
for _ in range(timesA):
    pA = m/(m+n)
    re+=cur*pA
    #print(re)
    n-=1
    if(n<=0):
        break
    cur*=(1-pA)*(n/(m+n))
    n-=1
    if((al)%3==1 and n<=0):
        re+=cur
        break
re*=1000000
if re%10==5:
    re+=5
re/=1000000
print('{:.5f}'.format(re))

2019.9.8 搜狗三道勸退題

1.

2019.9.11 英語流利說

1. 檢測有向圖是否有環

這題沒寫出來。

2019.9.12 58同城

1. 特別簡單一道題

2. 小朋友發糖果,相鄰小朋友高分比低分的糖果多,最少需要多少糖果

def func(nums):
    if len(nums) == 1:
        return 1
    res = [0 for _ in range(len(nums))]
    res[0] = 1
    for i in range(1, len(nums)):
        if nums[i] > nums[i - 1]:
            res[i] = res[i - 1] + 1
        else:
            res[i] = 1

    for i in range(len(nums) - 2, -1, -1):
        if nums[i] > nums[i + 1] and res[i] <= res[i + 1]:
            res[i] = max(res[i], res[i + 1] + 1)

    return sum(res)

n = int(input())
nums = []
for i in range(n):
    nums.append(int(input()))
print(func(nums))

3. leetcode64

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