1. 程式人生 > >【HDU 6410】序列期望 【期望 + 數學】

【HDU 6410】序列期望 【期望 + 數學】

Problem Description
“看似隨機,實則早已註定”——光羽

度度熊有n個隨機變數x1,x2,...,xn。給定區間[l1,r1],...,[ln,rn],變數xi的值會等概率成為區間[li,ri]中的任意一個整數

顯然這n個隨機變數的值會有一共i=1n(rili+1) 種情況,且每種情況出現的概率為i=1n1rili+1

對於某種情況,令h=maxx1,x2,...,xn,定義這種情況的權值為:

i=1n(hxi+1).

度度熊想知道權值的期望是多少?請將答案對109+7取模後輸出。

PS:不清楚期望是啥?為什麼不問問神奇的百度呢?

Input
第一行一個數,表示資料組數T。

每組資料第一行一個整數n;接下來n行,每行兩個數,表示li和ri。

資料組數T=100,滿足:

1n100
1liri104

其中70%的資料滿足ri≤100。

Output
每組資料輸出一行,每行僅包含一個數,表示期望。

假設答案為pq,請輸出p×q−1 mod 109+7,此處q−1為q的逆元。

Sample Input
2
3
2 5
2 4
2 5
3
1 1
2 3
1 1

Sample Output
875000012
500000010

Hint

第二組資料的解釋:序列只有兩種情況(1,2,1)和(1,3,1),權值分別為2*1*2=4和3*1*3=9,答案為(4+9)/2,在模域下為500000010。
分析: 因為是要求期望,所以是每一種情況概率乘相對應的權值,求和就行了。然後我們可以發現每一種情況的概率都是一樣的,所以我們只需要算出所有情況的總權值之和就行了。但是如果按照題意給的公式求解,時間肯定爆炸,所以我們要優化這個公式,我們可以列舉h,對於同一個h來說(lihrixi=l

ihhxi+1)(ri<hxi=lirihxi+1) 這個公式可以計算出包含最大值為h的所有情況,但是我們想要的是最大值為h的總權值,所以我們可以減掉小於h的那部分就可以了。
優化後的公式還是蠻不好想的,所以我抽象出來了一個簡單的問題,把這個搞懂了,應該就可以理解上面的公式:
3 種物體,每種物體有3個(每個物體都有自己獨特的權值),你每次必須要從一種物體裡面挑選一個, 這樣會有3*3*3種選擇,每種選擇的權值定義為:所選的三個物體的權值之和.。現在求所有選擇的總權值之和。
a3b3c3
a2b2c2
a1b1c1
最暴力的一種就是3*3*3的複雜度求解。
另外一種呢,所有情況的總權值之和為: