組合計數 CodeForces 888D

2021-08-10 19:12:59 字數 1050 閱讀 2878

題意&分析:

對於乙個給定數列,求滿足 ai = i 的元素個數不少於 n-k 個的數列的個數。換句話說,就是求最多有 k 個元素不滿足 ai = i 的數列有幾個。

分析一下用排列數得出一下結論:

k = 1 時,ans = 1;

k = 2 時, ans = 1 + c(2,n);

k = 3 時 , ans = 1 + c(2,n) + c(3,n)*2 (其中三個元素排列不在自己位置上的情況只有兩種,即2 3 1 和 3 1 2);

k = 4 時 , ans = 1 + c(2,n) + c(3,n) * 2 + c(4,n) * 9 (9同上理);

**如下:

#pragma comment(linker, "/stack:1024000000,1024000000")

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define inf 0x3f3f3f3f

#define eps 1e-6

#define test cout<<"stop here"namespace

std;

typedef

long

long ll;

const ll mod = 1e9 + 7;

ll n,k;

int main()

else

if(k == 2)

else

if( k == 3)

else

if(k == 4)

cout

<< ans 0;}

組合計數(初步)

組合數學主要是研究某組離散物件滿足一定條件的安排的存在性 構造及計數等問題。組合計數理論是組合數學中乙個最基本的研究方向,主要研究滿足一定條件的安排方式的數目及其計數問題。本課程主要介紹組合數學中常見的和重要的一些計數原理 計數方法和計數公式,包括一般的排列 組合的計算以及生成函式 容斥原理 反演原...

組合計數小啟發

在dp的領域中還有的很大一部分就是組合計數。以前做了fhq在集訓隊作業中的 連邊 這道題,大概就是要你給乙個圖連邊是的若干個點度數為奇數。比較容易發現是一道dp題,但是怎樣保證狀態不重不漏?常用的方法就是增維,比如按照排序大小擴充套件啦,按照字典序擴充套件啦從而使得狀態不重,但是還有兩種方法可以使得...

組合計數筆記

ck n n k n k ck n ck n 1 ck 1 n 1 ck 1 n n kk 1 ckn n個數進行排列,每個數都不在自己的位置上的方案數 dn n 1 dn 1 dn 2 推導 對於第 n 個數,不放在 n位置,一共有 n 1 種情況 第 n 個數放定後,假設放在 k上,考慮第 k ...