Tyvj P4876 近似排列計數 50

2021-08-09 00:07:12 字數 1255 閱讀 7066

原題鏈結

用了個搜尋

兩個剪枝

明顯在數字固定的地方

就不要列舉了

然後 如果這個數

只可能在這個位置用上

那就只能用這個數了

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define mod 1000000007

#define ll long long

using

namespace

std;

int n,m,k,t,ans,a[25],x,y,use[25];

void dfs(int p)

if(a[p]) dfs(p+1);

else

for(i=max(p-k,1);i<=min(p+k,n);i++)

if(!use[i])

}}int main()

dfs(1);

printf("%d\n",ans);

}return

0;}

還有乙個30分的dp

[理論上是]50分的複雜度

利用狀態壓縮

乙個n位的二進位制數

1表示這個位用過

0表示沒用過

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#define mod 1000000007

#define ll long long

using

namespace

std;

int paji[5]=,t,n,m,k,p,a[25],dp[2000005],d,x,y;

void work()

else}}

printf("%d\n",dp[p-1]);

}int main()

if(k==0) printf("1\n");

else work();

}return

0;}

P4876 近似排列計數50

時間限制 1s 記憶體限制 256mb 問題描述 對於乙個1 n的排列,如果滿足第i個數 ai i k,則稱該排列為k 近似排列。現在排列的若干位置已經確定,你需要計算剩下的數有多少種排列方法使得形成的排列是k 近似排列。輸入 輸入檔名為count.in。第一行乙個數t 10 表示資料組數 對於每一...

排列計數(dp)

主要題意就是給你乙個排列組合,要輸出指定ai i的個數輸出符合的排列組合與1000000007取模個數。input there are several test cases,and one line for each case,which contains two integers,n and k....

Perm排列計數

記憶體限制 512 mib 時間限制 1000 ms 標準輸入輸出 題目描述 稱乙個1,2,n的排列p1,p2.pn是magic的,當且僅當2 i n時,pi pi 2.計算1,2,n的排列中有多少是magic的,答案可能很大,只能輸出模p以後的值 輸入格式 輸入檔案的第一行包含兩個整數 n和p,含...