原理1: 把多於n+1個的物體放到n個抽屜裡,則至少有乙個抽屜裡的東西不少於兩件。
原理2:把多於mn+1(n不為0)個的物體放到n個抽屜裡,則至少有乙個抽屜裡有不少於m+1的物體。
原理3:把無數多件物體放入n個抽屜,則至少有乙個抽屜裡有無數個物體。
原理4:把mn-1個物體放入n個抽屜中,其中必有乙個抽屜中至多有m-1個物體。
只考慮最多的一種糖果的數量和其餘所有的糖果總數之間的關係
使用ramsey定理,大於等於6的情況直接判斷
3,4,5的情況特判
和上題一樣
題意:就是讓你求(a,b)區間於n互質的數的個數
轉化為先求出(1,m)區間與n不互質的數的個數:先求出n的質因子,再利用容斥原理
難點:如何模擬容斥原理
#include#includeusing namespace std;
int prime[33],pn;
long long calc(long long n)
if(cnt&1) res+=n/tmp;
else res-=n/tmp;
}return n-res;
}int main()
if(n!=1) prime[pn++]=n;
printf("case #%d: %lld\n",cse,calc(b)-calc(a-1));
}return 0;
}
比上題多乙個列舉
正數分解定理+組合數學
有一定的思維成分
第一億個斐波那契數,矩陣快速冪有
隱藏的斐波那契,其實更應該說是遞推
母函式的原理:
把組合問題的加法與冪級數的乘冪對應起來
整數劃分題
常規做法是dp
*dp[n][m]=dp[n][m-1]+dp[n-m][m]*還沒搞懂
指數型別的母函式
稍後待補
數學 組合數學
mod must be a prime const int mod 1e9 7 namespace combinatory ll inv ll x ll fac maxn invfac maxn void initc int n ll a ll n,ll m ll c ll n,ll m ll d ...
組合數學 求組合數
對於求組合數,要根據所給資料範圍來選擇合適的演算法 這道題中所給的資料範圍適合用打表的方法直接暴力求解 先用4e6的複雜度預處理出所有的情況,再用1e4的複雜度完成詢問即可 include using namespace std const int n 2010 const int mod 1e9 ...
組合數學筆記
從n個數中選m個數,每個數至多選一次,方案數 性質 c n,0 c n,n 1 c n,m c n,n m c n,m c n 1,m 1 c n 1,m 楊輝三角 二項式展開 x y n i 0.n c n,i x iy n i 那這裡先說一下楊輝三角 前提 每行端點與結尾的數為1 每個數等於它上...