BZOJ 3771 生成函式,FFT

2022-03-24 00:22:25 字數 2528 閱讀 3436

我們講乙個悲傷的故事。

從前有乙個貧窮的樵夫在河邊砍柴。

這時候河裡出現了乙個水神,奪過了他的斧頭,說:

「這把斧頭,是不是你的?」

樵夫一看:「是啊是啊!」

水神把斧頭扔在一邊,又拿起乙個東西問:

「這把斧頭,是不是你的?」

樵夫看不清楚,但又怕真的是自己的斧頭,只好又答:「是啊是啊!」

水神又把手上的東西扔在一邊,拿起第三個東西問:

「這把斧頭,是不是你的?」

樵夫還是看不清楚,但是他覺得再這樣下去他就沒法砍柴了。

於是他又一次答:「是啊是啊!真的是!」

水神看著他,哈哈大笑道:

「你看看你現在的樣子,真是醜陋!」

之後就消失了。

樵夫覺得很坑爹,他今天不僅沒有砍到柴,還丟了一把斧頭給那個水神。

於是他準備回家換一把斧頭。

回家之後他才發現真正坑爹的事情才剛開始。

水神拿著的的確是他的斧頭。

但是不一定是他拿出去的那把,還有可能是水神不知道怎麼偷偷從他家裡拿走的。

換句話說,水神可能拿走了他的一把,兩把或者三把斧頭。

樵夫覺得今天真是倒霉透了,但不管怎麼樣日子還得過。

他想統計他的損失。

樵夫的每一把斧頭都有乙個價值,不同斧頭的價值不同。總損失就是丟掉的斧頭價值和。

他想對於每個可能的總損失,計算有幾種可能的方案。

注意:如果水神拿走了兩把斧頭a和b,(a,b)和(b,a)視為一種方案。拿走三把斧頭時,(a,b,c),(b,c,a),(c,a,b),(c,b,a),(b,a,c),(a,c,b)視為一種方案。

第一行是整數n,表示有n把斧頭。

接下來n行公升序輸入n個數字ai,表示每把斧頭的價值。

若干行,按公升序對於所有可能的總損失輸出一行x y,x為損失值,y為方案數。44

5674 1

5 16 1

7 19 1

10 1

11 2

12 1

13 1

15 1

16 1

17 1

18 1

樣例解釋

11有兩種方案是4+7和5+6,其他損失值都有唯一方案,例如4=4,5=5,10=4+6,18=5+6+7.

所有資料滿足:ai<=40000

題意:給出 n個物品,價值為別為xi且各不相同,現在可以取1個、2個或3個,問每種價值和有幾種情況?順序不同算一種。

解法:顯然是個母函式,a表示每種物品取乙個的情況,b表示每種物品取二個的情況,c表示每種物品取三個的情況。用指數表示價值,係數表示該價值的個數,顯然多項式相乘後指數會相加,係數會相乘,很容易就求出來了。

所以對於每種物品價值x,a[x]++,b[2*x]++,c[3*x]++。

如果取1個物品,答案就是a。

如果取2個物品,a^2中有重複的(x,x)的情況,所以答案為a^2-b。

如果去3個物品,a^3中可能有(x,x,x)(x,x,y)(x,y,x)(y,x,x)這幾種重複的情況,而a*b能夠求出所有形容(x,x,x)和(x,y,y)的情況數。(x,x,y)(x,y,x)(y,x,x)總的情況數=(x,y,y)*3,而a*b*3又會多減去了兩次(x,x,x),所以要用c加回來。所以答案為a^3-3*b*a+2c。又由於順序不同算一種情況,因為每種物品價值都不一樣,情況(2)/2,情況(3)/6。

故總情況數量等於:

BZOJ 4516 生成魔咒

串串長度 n 1 05 n leq 10 5 n 10 5,串中元素x 1 09 x leq 10 9 x 10 9,問每加入乙個數後本質不同的子串數 裸的s am samsa m或者是離線sasa sa。這裡討論sasa sa做法。實際上問題就是把整個串翻轉一下 然後就相當於計算完每個串的貢獻以後...

數學 3 生成函式

生成函式是乙個比較複雜且廣泛的數學知識點,應當重點學習 首先給出一些運算公式,方便以後學習使用 texttt begin alpha f z beta g z sum alpha f n beta g n z n z mg z sum ng z n m geq0 fracz sum g z n m ...

MD5生成函式

souce if you know,please tell me.thanks using system using system.collections.generic using system.componentmodel using system.data using system.drawi...