牛客挑戰賽43 集合操作

2022-05-11 02:06:31 字數 813 閱讀 9698

神奇的題,公式可以看**

已知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 long

using 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開始隨機...