Codeforces 10D LCIS 求最長公用上升子序列及輸出這個子序列 dp

來源:互聯網
上載者:User

標籤:class   blog   code   http   tar   com   

題目連結:點擊開啟連結

題意:

給定n長的一個序列

再給定k長的一個序列

求LCIS並輸出這個子序列

如有多解輸出任意解。。

= - = 敲的時候聽著小曲兒pre的含義還沒有想清楚,萬萬沒想到就過了。。。


#include<stdio.h>#include<iostream>#include<string.h>#include<set>#include<vector>#include<map>#include<math.h>#include<string>#include<stdlib.h>#include<algorithm>using namespace std;#define N 505int a[N],s[N];int n, k;int dp[N][N];int pre[N][N][2];int is[N][N];vector<int>G;int main(){int i,j,co;while(~scanf("%d",&n)){G.clear();for(i=1;i<=n;i++)scanf("%d",&a[i]);scanf("%d",&k);for(i=1;i<=k;i++)scanf("%d",&s[i]);memset(dp, 0, sizeof dp);memset(pre, 0, sizeof pre);memset(is, 0, sizeof is);for(i=1;i<=n;i++) {int maxx = 0;int x = 0, y = 0;for(j=1;j<=k;j++){dp[i][j] = dp[i-1][j];if(a[i]>s[j] && maxx < dp[i-1][j]) {maxx = dp[i-1][j];if(is[i-1][j])x = i-1, y = j;else {x = pre[i-1][j][0];y = pre[i-1][j][1];}}if(a[i]==s[j]) {is[i][j] = 1;dp[i][j] = maxx + 1;if(is[x][y])pre[i][j][0] = x, pre[i][j][1] = y;else {pre[i][j][0] = pre[x][y][0];pre[i][j][1] = pre[x][y][1];}continue;}if(is[i-1][j])pre[i][j][0] = i-1, pre[i][j][1] = j;else {pre[i][j][0] = pre[i-1][j][0];pre[i][j][1] = pre[i-1][j][1];}}}int ans = 0;int x = n, y = k;for(i=1;i<=k;i++)if(ans<dp[n][i]){ans = dp[n][i];x = n, y = i;}printf("%d\n",ans);if(!ans)continue;while(x+y) {if(is[x][y])G.push_back(a[x]);int x1 = pre[x][y][0];int y1 = pre[x][y][1]; x = x1 , y = y1;}for(i=G.size()-1; i>=0; i--){printf("%d",G[i]);i?printf(" "):puts("");}}return 0;}/*21 231 2 3*/


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.