神奇的題,公式可以看**
已知n和m,ans = c(n,0)+c(n,1) .....c(n,m+1);
這個要分開看。
c(n,0)+c(n,1)+c(n,2)的含義為 長度為0,1,2的集合有這麼多種排列方法,為長度小於等於m是不會收到限制的。
c(n,m+1)的含義是什麼呢?
舉個例子,n = 6,m = 2
則 1 2 3 | 4 5 6 |
排列時,可以把4,5,6,插入1,2,3前面的縫隙中,而如果有數字前面比自己大,就把他刪掉
比如排列 4 5 6 就等價於 4 |1 | 5 |2| 6 |3|,三後面不能放置5或者6,所以可以取出來的m+1就個空去插,
所以有c(n,m+1)種,
而取走了m+1個數字之後剩下的數字是固定的,不可變的,所以什麼也不要加減乘除,所以概率為c(n,m+1)
#include #define ll long longusing namespace std;
const ll mod=998244353;
const int maxn=2e5+7;
ll fac[maxn];
ll inv[maxn];
ll c(int m,int n)
ll k_q(ll a,ll m)
return ans;}
void init()
int main()
printf("%lld\n",ans);
return 0;
}
牛客挑戰賽58
前i 1的二進位制相等,a的前n個數的前i 1位可以亂取,b的前n 1個數前i 1位也可以亂取,因為b的第n個數的前i 1異或可為任意值,所以sum1 2 i 1 n 2 i 1 n 1 2 i 1 2n 1 a的第i位為1且b的第i位為0 只要a的n數第i位中有乙個不為0的,a的第i位不為0,b的...
牛客Wannafly挑戰賽12 題解
傳送門 說是比賽題解,其實我只會前三題 後面的一定補 t1題意,在乙個長度為n的時間內,問如何選擇存款期限,使得收益最大。dp include include include include using namespace std define fi first define se second d...
日常摸魚 牛客挑戰賽3
無 期望dp,要用字首和優化一下。略了 比較水的追及問題。但是兩個點一開始就在一起要特判掉。稍微轉化一下。只用求數列中任意兩對數的和的位數,這個可以隨便套資料結構。思路大致跟上一場蝴蝶差不多。而且比上場那個簡單多了,連資料結構都不用套。給定乙個n個點的樹,以1為根,邊權都是1。乙個人從起點s開始隨機...