題目描述:
求由 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 樣例輸入...