把概率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...