1. 程式人生 > >521C Pluses everywhere 數學拆分求貢獻 + 預處理組合數

521C Pluses everywhere 數學拆分求貢獻 + 預處理組合數

1.題意:給出一串n個數字,讓你在這串數字中新增k個 ' + ' 號(新增後表示式合法),然後對於所有表示式拆分的數字求和

例如: 

3 1
108
In the  sample the result equals (1 + 08) + (10 + 8) = 27.

2.分析解題思路:

(1)先說一下怎麼引導著去解題。我們一上來肯定想直接暴力列舉加號位置啊!那多爽啊!但是,那樣是會超時的。所以,如果想著怎麼放置' + '號來解題肯定是複雜的,所以我們得考慮數字,考慮這個數字在最終結果裡面的貢獻!這樣子迴圈一邊線性的數字,統計一下每一個的貢獻求下和就解出來了,那多爽。

(2)然後來考慮怎麼求每個數字在最終結果裡的貢獻呢。我們這n個數字有n-1個空位置,來放置k個' + '號,不論哪一種放置方法,每個數字都要在這種情況裡出現一次,但是出現時所充當的分位是不同的,這就是統計貢獻的地方!再由於每個數字都是不同的單獨的,所以單獨考慮每個數字可能所成為的位數時不會出現重複。

第n位:不論加號怎麼放都只能充當某個數字的個位 C(n-1,k)