2023年10月31日提高組 T1 A

2021-08-30 13:25:14 字數 2070 閱讀 3380

求n

nn的排列了交換為公升序的最小交換次數的期望

兩種思路

暴力打表找規律

動態規劃

第一種只需要打乙個bfs

bfsbf

s+hash

hash

hash

#include

#include

#define p 10000007

using

namespace std;

int n,ans;

struct nodebegin;

struct hash

inline

void

push

(node x)

inline

bool

check

(node x)

}h;inline

void

bfs()}

}return;}

signed

main()

第二種dpdp

dp思路也很明顯,除了最後是n

nn其它所有的交換次數都會變多

a [i

]=a[

i−1]

×i+(

i−1)

×(i−

1)

!a[i]=a[i-1]\times i+(i-1)\times (i-1)!

a[i]=a

[i−1

]×i+

(i−1

)×(i

−1)!

#include

#include

#include

#define wyc 998244353

using

namespace std;

long

long a[

10000001

],jc,inv[

10000001

],n,t;

inline

long

long

ksm(

long

long x,

long

long y)

inline

long

long

read()

inline

void

write

(long

long x)

signed

main()

t=read()

;while

(t--

)}

#include

#include

#include

#define wyc 998244353

using

namespace std;

long

long a[

10000001

],jc,inv[

10000001

],n,t;

inline

long

long

ksm(

long

long x,

long

long y)

inline

long

long

read()

inline

void

write

(long

long x)

signed

main()

inv[

10000000]=

ksm(jc,wyc-2)

;//o(n)倒序求逆元

for(

register

int i=

9999999

;i>

0;i--

)(inv[i]

=inv[i+1]

*(i+1)

%wyc)

%=wyc;

t=read()

;while

(t--

)}

2023年10月29日提高組 T1 A

n nn個球,m mm個盤,盤子不能空,求本質上不相同的方案數 首先深搜 include using namespace std int n,m,ans inline void dfs register int dep,register int sy,register int last 分完了,統計...

2023年10月30日提高組 T1 A

求樹上聯通快中最大值與最小值之差為k kk的方案數 設最大值與最小值之差為xxx x xx正好為k kk的方案數 x k x leq k x k 的方案數 x x k的方案數 於是我們就可以樹形dpdp dp啦fi fs on 1 f i prod f 1 fi fson 1 include def...

2023年10月30日提高組

jzoj 5194 盟主的憂慮 jzoj 5907 輕功 問乙個樹中有多少個連通塊最大最小點權之差等於kkk 也就是 k 的個數 k 1 的 個數 k 的個數 k 1 的個數 k 的個數 k 1 的 個數,那麼就可以列舉點,對於這個點求的是以它為最大點權符合要求的個數,那麼容易得到合法條件a m a...