4816 江哥的dp題b

2022-05-03 10:45:25 字數 1083 閱讀 3190

時間限制: 1 s

空間限制: 256000 kb

題目等級 : ** gold

題解給出兩個1~n的隨機排列a,b。若ai=bj,則你可以在ai,bj之間連一條線。要求每條線至多與一條線相交。下圖分別說明了一種合法和不合法的方案。

輸入描述 input description

第一行乙個正整數n。

接下來一行n個正整數,描述a。

接下來一行n個正整數,描述b。

輸出描述 output description

輸出一行乙個整數,描述答案(最大合法連線數量)。

樣例輸入 sample input

1 5 7 3 2 6 4

7 3 4 1 6 5 2

樣例輸出 sample output

資料範圍及提示 data size & hint

測試點編號              資料範圍

1,2,3                         n≤20 

4,5,6,7,8,9,10              n≤1000

分類標籤 tags 點此展開 

ac**:

/*

設f[i][j]表示取序列a前i個元素與序列b前j個元素的最多連線數量,則有如下狀態轉移方程:

(1)a[i]=b[j]

f[i][j]=f[i-1][j-1]+1

(2)a[i]≠b[j]

f[i][j]=max(f[x][y]+2,f[i-1][j],f[i][j-1])(x表示b[j]在序列a中的位置,y與此同理)。

此型別的dp似乎可以用前n項來二維實現。

*/#include

#include

using

namespace

std;

const

int n=1e3+1

;int

n,a[n],b[n],pa[n],pb[n],f[n][n];

intmain()}}

printf("%d

",f[n][n]);

return0;

}

江哥的DP題(B)

題目描述 給定兩個1 n的序列a b,如果ai bj,則能夠在ai bj之間連一條直線,要求每條直線至多與一條直線相交。輸入描述 第一行輸入乙個正整數n 第二行輸入n個正整數,表示序列a的元素 第三行輸入n個正整數,表示序列b的元素。輸出描述 輸出乙個整數,表示最大的合法連線數量。樣例輸入 71 5...

CODE VS 江哥的DP題b

原題 江哥解題報告 我們不妨按照江哥dalao的思路來寫 設f i,j 表示a中列舉到了第i個,b中列舉到了第j個,則 a i b j f i,j f i 1,j 1 1 如果相等就可以增加一條線 a i b j f i,j max a1,b1是要幹什麼呢?不妨看一看這張圖 找到當前b j 所對應的...

江哥的DP題(A)

題目描述 給定乙個長度為n的序列a a1 a2 a3 an 取k個互不相同的元素,使得 1 兩兩元素互不相鄰 2 元素之和最大。輸入描述 第一行輸入兩個正整數n k 第二行輸入n個整數,表示序列a中的元素。輸出描述 輸出乙個整數,表示最大和。樣例輸入 樣例1 7 33 5 7 1 9 10 7 樣例...