2019 08 25校內模擬賽Graph

2022-02-12 18:38:13 字數 1402 閱讀 7509

其實這是道很難的容斥.

所以我考場上直接考慮了\(m=0\)的暴力和白給的\(m=\cfrac\)的\(10\)分.

白給的那十分是完全圖,根據題意就只需要輸出\(0\)就行了.

而至於\(m=0\)的\(40pts\),稍加思索就會發現它和錯排是雙射關係...

於是,就直接錯排就好了.

但我當時忘了錯排公式是什麼了...遞推式也沒想起來...

於是我就妄想手推容斥形式的錯排,但是我死了,沒推出來.

於是我就\(10pts\)走人了.

後來在\(wqy\)的指導下推了出來,長這個亞子:

\[d_n=\sum_^n \\ \end\right) ( n - i ) ! }

\]怎麼推出來的呢?

你考慮,強制\(i\)個點的\(p_i=i\),那麼方案就是\(\left(\begin \\ \end\right) ( n - i ) !\).

然後我們選出\(i\)個點就行了,這個東西就這亞子出來遼~~

\(code:\)

#include #include #include #include #include #include #include #include #include #include #include #include #define mem(x,y) memset ( x , y , sizeof ( x ) )

#define rep(i,a,b) for (int i = a ; i <= b ; ++ i)

#define per(i,a,b) for (int i = a ; i >= b ; -- i)

#define pii pair < int , int >

#define x first

#define y second

#define rint read#define int long long

#define pb push_back

using std::set ;

using std::pair ;

using std::max ;

using std::min ;

using std::priority_queue ;

using std::vector ;

template < class t >

inline t read ()

while ( ch >= '0' && ch <= '9' )

return f * x ;

}const int mod = 1e9 + 7 ;

const int n = 2e3 + 100 ;

int n , m , ans ;

int c[n][n] , g[n] ;

signed main()

2018 10 12 校內模擬賽

分析 題一 一道模擬題 但模擬也是有很多坑的 寫出一道題後,一定要自己試很多很多很多組不同的資料 比如這道題,幾乎我試的每一組資料都找出了我程式的bug,好險 分析 題二 好題!應該是和松鼠聚會這道題本質一樣的 首先我們需要推導出任意兩個點 x,y a,b 之間能夠到達彼此所需要走的最短步數,由於可...

1105 校內模擬賽

題一 差分約束or帶權並查集?不啊,zz了,簡單模擬即可 我簡直服了我自己了,想複雜了 直接對每乙個聯通塊隨便找乙個點賦位置,然後dfs繼續找下去,給每乙個點賦值,如果在搜尋的過程中,發現了有衝突,就是impossible了 注意加邊的時候加雙向邊,因為你是從隨便乙個點開始搜尋的 然後這麼簡單的乙個...

2018 9 27 校內模擬賽

a dna 題目大意 給定乙個長度為n,每項值為1或2的數列。有q次詢問,對於每次詢問回答乙個區間 l,r 使得區間內的和等於xi。時間限制 1000ms 空間限制 256mb 編譯指令 開啟o2和c 11 solution 容易發現,若存在乙個權值和為 x x 2 的串,必然存在乙個權值和 為 x...