求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...