jxoi2018 遊戲 組合數學

2022-05-03 19:06:09 字數 1602 閱讀 4794

首先令$n=r-l+1$。

令$k$表示區間$[l,r]$中存在多少個數$x$,使得$x$不存在小於$x$且在區間$[l,r]$中的因數,我們把包含這些數的數集稱為$s$

我們來先想乙個$o(nk)$的$min-max$容斥做法吧。。。。。

顯然這一題我們可以轉化為min-max容斥的模型(將這k個數選完期望需要選多少次)

$max_=\sum_(-1)^min_$。

令$p_x=\sum_ min_$。

我們推一推式子就會發現$p_i=x!(n-x)!\sum_i\binom$。

然後我們發現這個式子是$o(n^2)$的,而且非常難以推出。

**如下(這個**可能有點假)

1 #include2

#define l long long

3#define mod 1000000007

4#define m 10000005

5using

namespace

std;

67 l pow_mod(l x,l k)

8 l fac[m]=,invfac[m]=;

9 l c(int n,int m)

1011

int vis[m]=;

12int n,k=0;13

14 l p[m]=;

1516

intmain()

2728

for(int x=1;x<=k;x++)

35 p[x]=now*x%mod*fac[n-x]%mod;36}

37 l ans=0;38

for(l x=1,zf=1;x<=k;x++,zf=-zf)

41 cout42 }

考慮一些簡單的方法

我們考慮回題目中的列舉排列。令$f_i$表示 $t(p)=i$的排列個數,那麼答案顯然為$\sum_^f_i$

不難發現,一種$t(p)=i$的排列,其前$i-1$項中必包含有數集$s$中$k-1$個數,且第i個數必為數集$s$中的數。

那麼不難求出$f_i=k(n-k)!\dfrac$

答案即為$k(n-k)!\sum_^ \dfrac$

隨便求一求就好了

1 #include2

#define l long long

3#define mod 1000000007

4#define m 10000005

5using

namespace

std;

67 l pow_mod(l x,l k)

8 l fac[m]=,invfac[m]=;

9 l c(int n,int m)

1011

int vis[m]=;

12int n,k=0;13

14 l p[m]=;

1516

intmain()

27 l ans=k*fac[n-k]%mod,sum=0;28

for(int i=k;i<=n;i++)

29 sum=(sum+fac[i]*invfac[i-k])%mod;

30 cout31 }

JXOI2018 遊戲 組合數學

給定乙個區間 l,r 每次選第乙個數,把它和它後面所有它的倍數去掉,直到序列為空,操作的次數稱為這個序列的代價。求對給定序列的所有排列的代價之和。顯然對於區間內的所有數,我們可以給出這些數的乙個拓撲圖,那麼入度為零的點的個數就是必須要選的點,其它的點在必須要選的點選完以後都不用選了,因此我們只需要考...

洛谷 JXOI2018 遊戲

初見安 這裡是傳送門 洛谷p4562 遊戲 九條可憐是乙個富有的女孩子。她長大以後創業了,開了乙個公司。但是管理公司是乙個很累人的活,員工們經常揹著可憐偷懶,可憐需要時不時對辦公室進行檢查。可憐公司有 nn 個辦公室,辦公室編號是 l到 l n 1,可憐會事先制定乙個順序,按照這個順序依次檢查辦公室...

JXOI2018簡要題解

考慮如果所有數都不同,那麼一定只有一種方案可行,需要 n 次 如果有數相同,考慮強制大小關係,最後除上每個相同數之內的排列個數 考慮如何加入新的數,明顯是越平均越好,模擬一下即可 複雜度為 o tn log n include define n 200005 define m 10000005 de...