B君的第一題

2022-05-29 08:48:10 字數 1041 閱讀 9456

1.1 題目大意

大概是個比較有趣的面試題。

1.2 題目分析

首先考慮如何計算當前的勝率。 這個有兩種演算法,動態規劃和組合數。

1.3 動態規劃

假設當前甲贏了 i 場,乙贏了 j 場。 如果 i = n,那麼 fi,j = 1。 如果 j = n,那麼 fi,j = 0。 對於一般情況,有 fi,j = 1 2 (fi+1,j + fi,j+1)。 可以換一種方法表示,設當前勝率為 p。 如果下一場比賽甲贏了,勝率會變成 p + q。 如果下一場比賽甲輸了,勝率會變成 p − q。 即勝率的增加量和減少量一樣。 這場⽐賽應該下注 2q × 22n−1。 這樣如果勝率增加就贏錢,勝率減少就輸錢。 如果勝率從 1/2 增加到 1,就會贏 22n−1。 如果勝率從 1/2 減少到 0,就會輸 22n−1。 換句話說,當前剩餘錢數,是由勝率決定的。 勝率為 1/2,錢數為 0。 勝率為 1,錢數為 22n−1。 勝率為 0,錢數為 −22n−1。 對於⼀般情況勝率 1/2 + q,錢數為 2q × 22n−1。這樣你便可以寫出乙個 o(n²) 的做法。

1.4 組合數

要預處理組合數和2的次冪。

#include using

namespace

std;

int n, x, y, o, p = 1000000007

;int v[2000020

];long

long c(int n, int

m)

return

re;}

intmain()

x = y =n;

long

long z = c(x + y - 2, x - 1) * 2 %p;

while (x > 0 && y > 0

) else

}return0;

}

view code

滴滴第一題

方法 先求字首和,將pair 字首和的值,字首和標號i 加入multimap中,搜尋每一種字首和的lowerbound和upbound,計算兩者之差,與字首和為零的標號比較,取最大值。include include include includeusing namespace std define ...

猿人學的第一題

思路 分析m後面的加密資訊 這個符號手打搜不到,複製可以。題目 和好幾個人多部落格鏈結,研究三天才理清思路,自學太難了 import requests import execjs import jsonpath class js one def init self,page self.page pa...

杭電第一題

getchar的用法 首先getchar是在stdio.h中宣告一下才能用,所以標頭檔案中必須有stdio.h。他接收的是字元!他的操作原理 當編譯執行至getchar 時,使用者輸入了字元按下回車鍵後,他以回車鍵為開始標識,開始乙個乙個從stdio流中讀取字元,每次讀取字元後,getchar函式的...