题目链接
难度:普及+/提高
这道题只会 O ( n 2 ) O(n^2) O(n2)的最暴力的方法,其他方法还不太会。
DP最简单的题也做了几道了,奈何基础太差,往下基本寸步难行。遂决定明天开始补其他基础,DP就先不更了。
最近作业太多了,论文还都没看,本题题解只能先放在这了,争取周末前补上。
二.代码 1. 粗暴方法 复杂度 O ( n 2 ) O(n^2) O(n2)#include2. LIS单调栈做法 复杂度 O ( n l o g n ) O(nlogn) O(nlogn) 3. LIS的DP优化 复杂度 O ( n l o g n ) O(nlogn) O(nlogn)#define LEN 1001 using namespace std; long data[LEN][2]={0}; long dp[LEN][LEN]={0}; int main(){ int n; while(cin>>n) { for (int i = 1; i <= n;i++) { cin >> data[i][0]; dp[i][0] = 0; dp[0][i] = 0; } for (int i = 1; i <= n;i++) cin >> data[i][1]; dp[0][0] = 0; for (int i = 1; i <= n;i++) for (int j = 1; j <= n;j++) { if (data[i][0] == data[j][1]) dp[i][j] = dp[i-1][j-1] + 1; else dp[i][j] = max(dp[i - 1][j], dp[i][j - 1]); } cout << dp[n][n] << endl; } return 0; }



