NOIP模擬 動態規劃 permut

2021-08-03 16:49:40 字數 1379 閱讀 1032

題目描述:

求由 1 到 n 一共 n 個數字組成的所有排列中,逆序對個數為 k 的有多少個。

輸入格式:

第一行為乙個整數 t ,為資料組數。

以下 t 行,每行兩個整數 n,k,意義如題目所述。

輸出格式:

對每組資料輸出答案對 10000 取模後的結果。

樣例輸入:

1 4 1

樣例輸出:

3資料規模:

對於 30% 的資料,滿足:n≤12;

對於所有資料,滿足:n≤1000, k≤1000,t≤10。

題目分析:

假如你已經求出1~n的逆序對個數為k的排列個數,在加入n+1這個數時,那麼加在最後乙個,k不變;加在最後乙個前面,k+1;以此類推;加在第乙個前,則k+n。可以感知的是乙個動態規劃,再手算出前幾個,尋找規律。得到轉移方程:

f[i][j]=f[i-1][j]+f[i][j-1],(i>j);

f[i][j]=f[i-1][j]+f[i][j-1]-f[i-1][j-i],(i≤j);

附**:

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

int t,n,f[1010][1010];

struct nodea[100];

int main()

f[2][0]=1;

f[2][1]=1;

f[3][0]=1;

f[3][1]=2;

f[3][2]=2;

f[3][3]=1;

for(int i=4;i<=n;i++)

for(int j=0;j<=1000;j++)

if(j==0)

f[i][j]=1;

else

// 需要加10000,保持正確性,很容易沒考慮到,需注意

for(int i=1;i<=t;i++)

printf("%d\n",f[a[i].n][a[i].k]);

return

0;}

NOIP模擬 上課 動態規劃

問題描述學校裡有許多節課,第 i 節課從 ti 時刻開始上,上課的時間為 si,如果上了第 i 節課,你的做題能力將變成 ci 是能力的數值,不是能力的增長值 有 n 類作業,每類作業數量不限,每類作業完成乙份所需要的時間為 ai,做某類作業需要的做題能力達到 qi qi 才能完成。在每個時刻你可以...

NOIP模擬 table 動態規劃

source noip2016 rzz 2 t2 給定乙個 n m 的矩陣,行列均從 1 開始標號。乙個矩陣被認為是穩定的,當且僅當對於任意的 2 i n,第 i 行的數的和不小於第 i 1 行的數的和,且最後一行的數的和小於等於 m 並且要求矩陣中所有的元素都是非負的。求所有 n m 的穩定矩陣的...

NOIP模擬 記憶化搜尋 動態規劃 遊戲

題目描述 題目大意 有n個物品排成一排,從左往右第i個價值為a i 有兩個人從左往右輪流取物品。第乙個人可以拿一或兩個物品。如果前乙個人拿了k個,下乙個人只能拿k或k 1個。如果剩下的物品不夠拿,就結束。問如果大家都採取最優策略,那麼先手拿的物品的價值最多能比後手多多少。1 n 20000 樣例輸入...