題意&分析:
對於乙個給定數列,求滿足 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 ...