牛客第9場 E 概率dp

2021-08-24 18:13:39 字數 927 閱讀 1002

把概率dp當數學題做推公式,也是我太菜了。最重要是我還津津有味推了一下午。

剛一開始我想到列舉對的題數,從n到0跑一遍,預處理出來全部發生的概率pp。然後通過

當 對的題數為n時 :  序列全部連續       得分為     pp * n^m.

當對的題數為n-1時:  我們要判斷錯的那個題在什麼位置   得分為累積和: 令i從1到n,  pp*(100-p[i])/p[i] * [(i-1)^m+(n-i)^m]  

當對的題數為n-2時: 模擬得分為   令i從1到n,j從i+1到n, pp*(100-p[i])/p[i]*(100-p[j])/p[j] *[(i-1)^m+(j-1-i)^m+(n-j)^m]

當對的題為0時   得分  也為0。

後來仔細想想這不就是把所有的情況都算了一遍嗎,類似於概率論求期望。當n為1000時,時間複雜度為(2^n),這是萬萬不可以的。看到大家用時不多,所以我又想到這可能是個規律題。又瘋狂開始找遞推公式,一找就是一下午。

步入正題:

首先我們要把100的逆元處理出來,畢竟題意中給的給的是p[i],而這件事發生的概率為p[i]/100.

然後我們列舉到每個題的位置時它的得分。不斷用一層迴圈遍歷這個位置之前的狀態。把每一種情況都考慮進去。

**如下:

#include#define maxn 1005

#define mod 1000000007

typedef long long  ll;

using namespace std;

ll p[maxn],f[maxn];

ll _pow(ll a,ll b)

return ans%mod;

}int main()

}printf("%d\n",f[n]);

return 0;

}

題目

牛客巔峰賽S1第9場 黃金 鑽石

牛牛的木板 牛牛從牛畢那裡拿了一根長度為n的白木板,木板被等分成了n段 沒有被切割,只是虛擬劃分成了n段 其中有些段被牛畢用顏料染成了黑色。牛牛非常不喜歡黑色,它找來了一桶清洗劑決定對木板進行清洗,但是牛牛發現自己的清洗劑最多只能清洗m段。清洗完後,牛牛會把木板鋸成純色的幾段。例如假設木板是 黑黑黑...

2020牛客多校第三場 E

給你乙個a序列,讓你求出對於某個p序列和q序列,pi qi 使得它們花費的費用最少。對於p序列的定義,可以知道,下標和值是交換的,即對於 i,j 這兩個位置,有 pi j,pj i,p pi i,p pj i.即如果p ip i pi 為 j,那麼p jp j pj 一定為i,即讓a陣列裡面的的兩個...

牛客多校第3場 C Shuffle Cards

之所以補這題,是因為第一次使用rope,這是乙個可持久化平衡樹。不過本題沒有用到可持久化就是了,平衡樹的split和merge。include using namespace gnu cxx 下標從0開始,不可以cin,可以cout 由於rope的底層實現,insert,erase,get都是log...