51nod為了活躍比賽前的氣氛,組織了場抽卡比賽。這場比賽共 n個人參加,主辦方根據非歐血統鑑定器,得到了一些資料。每個人抽卡有 mi 種可能,得到的卡能力值為 aij 代價為 gij 的可能性為 pij ,所謂代價指的是玩家需要將一輪比賽後所得的點頭盾的 gij% 交給主辦方。每輪比賽每個人都隨機抽取卡片,待全部人抽取完畢後進行排名(按照a從大到小排),排在第 i 位的人有 vi 的點頭盾收入。現在主辦方想知道一輪比賽後每個人的期望收入。
第一行乙個正整數 n
接下來 n 個部分
每個部分第一行為正整數 mi,接下來 mi 行有三個整數 aij gij pij
接下來一行 n 個整數,分別為 vi
設 ∑pij=qi,則第 i 個人抽到第 j 張卡的概率為 pij/qi
1<=n,mi<=200,1<=aij<=1000000000,保證 aij 互不相同,0<=gij<=100,1<=pij<=1000,1<=vi<=1000
容易想到算列舉人,列舉他抽的哪張卡,求是第k名的概率。
暴力dp是o(n
4)
o(n^4)
o(n4)的。
發現重複計算很多。
從小到大列舉卡的權值,求這個權值是第k名的概率a
ka_k
ak。
那麼我們可以轉而求它的生成函式:f(x
)=∑i
=0na
ix
if(x) = \sum_^n a_i x^i
f(x)=∑
i=0n
ai
xi可以發現當我們列舉的權值為val
valva
l時。f (x
)=∏i
=1n(
pix+
(1−p
i)
)f(x) = \prod_^n(p_ix+(1-p_i))
f(x)=∏
i=1n
(pi
x+(
1−pi
))p
ip_i
pi為第i個人抽的卡的值》va
l>val
>va
l的機率。
然後發現在val
valva
l增大時,我們只會改變乘積式中的乙個一次多項式。
一次多項式除法+多項式乘法即可。
注意到這裡的第二個多項式是一次的。
可以o (n
)o(n)
o(n)
(就是做dp)
求出這個生成函式之後,再除一下那個人的多項式就可以統計那個人那個權值的答案。
o (n
3)
o(n^3)
o(n3
)具體看**。
ac code:
#include
#define maxn 405
#define mod 1000000007
using
namespace std;
int n,m[maxn]
,a[maxn]
[maxn]
,g[maxn]
[maxn]
,p[maxn]
[maxn]
,ps[maxn]
,pns[maxn]
,val[maxn]
;int pol[maxn]
,inv[
400005]=
,tmp[maxn]
;int ans[maxn]
;struct node
}q[maxn*maxn]
;int cnt =0;
intpow
(int base,
int k)
void
div(
int p)
}void
mul(
int p)
intmain()
}for
(int i=
2;i<=
300000
;i++
) inv[i]
=1ll
*(mod - mod / i)
* inv[mod % i]
% mod;
for(
int i=
0;i)scanf
("%d"
,&val[i]);
sort
(q+1
,q+1
+cnt)
;for
(int i=
1;i<=cnt;i++
) pns[q[i]
.x]+
= p[q[i]
.x][q[i]
.y];
mul(
1ll* pns[q[i]
.x]* inv[ps[q[i]
.x]]
% mod)
;//for(int j=0;j// printf("pol[%d] = %d\n",j,pol[j]);
}for
(int i=
1;i<=n;i++
)printf
("%d\n"
,(ans[i]
+mod)
%mod)
;}
51nod 1850 抽卡大賽
51nod為了活躍比賽前的氣氛,組織了場抽卡比賽。這場比賽共 n 個人參加,主辦方根據非歐血統鑑定器,得到了一些資料。每個人抽卡有 mi 種可能,得到的卡能力值為 aij 代價為 gij 的可能性為 pij 所謂代價指的是玩家需要將一輪比賽後所得的點頭盾的 gij 交給主辦方。每輪比賽每個人都隨機抽...
多項式 DP 省選模擬51nod抽卡大賽
的dp很容易能想到 定義d p i j k dp i j k dp i j k 表示第i個人選j時,有k個人比它小的概率 然後就能直接算期望了。不過這玩意顯然要t 發現,對於乙個已經固定的i,j,那麼剩下的所有人的所有情況本質上只有2種 比ai,ja ai,j 小,比ai,ja ai,j 大。那麼可...
51nod1702 卡牌遊戲
題目鏈結 最樸素的想法是將圖建出來跑最短路。觀察後發現如下兩條性質 1.邊權是1,可以用廣度優先搜尋代替最短路。2.因為是廣度優先搜尋,每條邊只會被鬆弛一次。但是圖的大小可能是n 2n 2 n2級別的。我們考慮使用線段樹維護隱式圖來支援搜尋。複雜度o n log2 n o nlog 2n o nlo...