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 5view codeusing
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 }
組合數取模
複習了一下組合數取模,當然推薦檢視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.直...