POJ 1836 Alignment DP(LIS)

來源:互聯網
上載者:User

題意:從一列隊伍中抽出一些人,使得剩下的隊伍中的人按身高有序排列(升序,或者降序,或者先升後降).
題解:LIS。枚舉邊界。邊界左邊的人身高逐漸升高,右邊的逐漸降低。

#include <cstdio>#define N 1010double array[N];int dpleft[N], dpright[N];int max ( int a, int b ){return a > b ? a : b;}int min ( int a, int b ){return a < b ? a : b;}int main(){int n, i, j, temp;scanf("%d",&n);for ( i = 1; i <= n; i++ )scanf("%lf",&array[i]);dpleft[0] = 0;for ( i = 1; i <= n; i++ ){for ( j = 0; j < i; j++ )if ( array[i] > array[j] )dpleft[i] = max ( dpleft[j] + 1, dpleft[i] );}for ( i = 1; i <= n; i++ )dpleft[i] = max ( dpleft[i], dpleft[i-1] ); dpright[n+1] = 0;for ( i = n; i >= 1; i-- ){for ( j = n+1; j > i; j-- )    if ( array[i] > array[j] )    dpright[i] = max ( dpright[j] + 1, dpright[i] );}for ( i = n; i >= 1; i-- )dpright[i] = max ( dpright[i], dpright[i+1] );temp = 0; for ( i = 1; i <= n; i++ )temp = max ( dpleft[i] + dpright[i+1], temp );printf("%d\n", n - temp );return 0;}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.