HDU 4869 遞推 組合數取模)

2022-08-05 16:09:14 字數 884 閱讀 7360

problem turn the pokers (hdu 4869)

題目大意

有m張牌,全為正面朝上。進行n次操作,每次可以將任意ai張反面,詢問n次操作可能的狀態數。

解題分析

記正面朝上為1,朝下為0。

若最後有x個1,則對答案的貢獻為c(n,x)。所以只需要知道最後可能的1的個數。

假設已經有a個1,某次操作可以將b張牌反面,可以發現操作之後可能的1的個數相差2。

記錄每次操作後1的個數所在區間為[l ,r],即可能取到的個數為l , l+2 , l+4 , ...... , r 。

每次轉移分類討論一下,貪心轉移即可。

參考程式

1 #include 2 #include 3 #include 4 #include 5

using

namespace

std;67

#define n 100008

8#define mo 1000000009

9int

a[n];

10int

pa[n],pb[n];

11int

n,m;

1213

void calc(int &l,int &r,int

x)24

25int c(int x,int

y)28

29int quick_pow(int x,int

y)36

return

res;37}

3839

intmain()

52 }

view code

組合數取模

複習了一下組合數取模,當然推薦檢視acdreamer的部落格啦,寫的確實好啦,自己把裡面的題目全a掉了。include include include include include include include using namespace std typedef long long ll l...

組合數取模

對於c n,m mod p。這裡的n,m,p p為素數 都很大的情況。就不能再用c n,m c n 1,m c n 1,m 1 的公式遞推了。這裡用到lusac定理 for non negative integers m and n and a prime p,the following congr...

組合數取模

組合數c m,n 表示在m個不同的元素中取出n個元素 不要求有序 產生的方案數。定義式 c m,n m n m n 並不會使用latex qaq 根據題目中對組合數的需要,有不同的計算方法。運用乙個數學上的組合恒等式 oi中稱之為楊輝三角 c m,n c m 1,n 1 c m 1,n 證明 1.直...